/* static functions */
static void error_callback(int error, const char *descr);
+static void clear(float r, float g, float b);
+static void viewport(int x, int y, int width, int height);
+static void zbuffer(bool enable);
+static void cull_face(Gfx_cull_face cf);
static void reshape(int width, int height);
bool init_vulkan()
return false;
}
+ if(!(vkswapchain = vku_create_swapchain(vksurface, win_w, win_h, 2,
+ VK_PRESENT_MODE_FIFO_KHR, 0))) {
+ fprintf(stderr, "Failed to create swapchain.\n");
+ return false;
+ }
+
+ vkswapchain_images = vku_get_swapchain_images(vkswapchain, &vknum_swapchain_images);
+ if(!vkswapchain_images) {
+ fprintf(stderr, "Failed to get swapchain images.\n");
+ return false;
+ }
+
+ vkswapchain_views = vku_create_image_views(vkswapchain_images, vknum_swapchain_images);
+ if(!vkswapchain_views) {
+ fprintf(stderr, "Failed to create swapchain image views.\n");
+ delete [] vkswapchain_images;
+ return false;
+ }
+
+ if(!vku_create_renderpass()) {
+ fprintf(stderr, "Failed to create renderpass'\n");
+ return false;
+ }
+
+ if(!vku_create_framebuffers(vkswapchain_views, vknum_swapchain_images, win_w, win_h)) {
+ fprintf(stderr, "Failed to create framebuffers.\n");
+ return false;
+ }
+
+ gfx_clear = clear;
+ gfx_viewport = viewport;
+ gfx_zbuffer = zbuffer;
+ gfx_cull_face = cull_face;
gfx_reshape = reshape;
return true;
void cleanup_vulkan()
{
+ if(win) {
+ glfwDestroyWindow(win);
+ }
+ glfwTerminate();
+
//TODOs according to the book:
// 1- make sure all threads have been terminated (when I add threads)
// 2- destroy objects in *reverse* order
+ vkDestroyRenderPass(vkdev, vkrpass, 0);
vkDestroySurfaceKHR(vkinst, vksurface, 0);
vku_cleanup();
}
vkswapchain = sc;
- free(vkswapchain_images);
+ delete [] vkswapchain_images;
vkswapchain_images = vku_get_swapchain_images(sc, 0);
vknext_swapchain_image = vku_get_next_image(vkswapchain);
-}
\ No newline at end of file
+}
+
+static void clear(float r, float g, float b)
+{
+}
+
+static void viewport(int x, int y, int width, int height)
+{
+}
+
+static void zbuffer(bool enable)
+{
+}
+
+static void cull_face(Gfx_cull_face cf)
+{
+}