From 25125b2e23c02199bdefb3a638584465229fd833 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Sun, 17 Jan 2021 20:54:11 +0100 Subject: Handle window resize --- include/vk-renderer.hpp | 48 ++++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) (limited to 'include/vk-renderer.hpp') diff --git a/include/vk-renderer.hpp b/include/vk-renderer.hpp index 580ca72..a8c5d2b 100644 --- a/include/vk-renderer.hpp +++ b/include/vk-renderer.hpp @@ -7,45 +7,27 @@ #include "thirdparty/vk_mem_alloc.h" #include "window.hpp" -#include "camera.hpp" -#include "sphere.hpp" -struct input_data { - color sky_color; - color ground_color; - - camera cam; - - float random_offset[2000]; - float random_disk[2000]; - vec3 random_in_sphere[1000]; - - sphere spheres[512]; - - uint32_t max_bounce; - uint32_t samples_per_pixel; - - // Output image resolution - uint32_t width; - uint32_t height; -}; +class input_data; class vkrenderer { public: vkrenderer(window& wnd, const input_data& inputs); - void compute(size_t width, size_t height); + void compute(); + + void recreate_swapchain(); private: void create_instance(); void create_debugger(); - void create_surface(window& wnd); + void create_surface(); void create_device(); - void create_swapchain(window& wnd); + void create_swapchain(); void create_pipeline(); @@ -59,11 +41,19 @@ class vkrenderer { void create_semaphores(); + void create_input_buffer(const input_data& inputs); + + void destroy_swapchain(); + void select_physical_device(); void select_compute_queue(); - void update_sets(const input_data& data); + void update_descriptors_buffer(); + + void update_descriptors_image(); + + void handle_swapchain_result(VkResult function_result); uint32_t compute_queue_index; uint64_t frame_index = 0; @@ -91,14 +81,16 @@ class vkrenderer { std::vector acquire_semaphores; VkSurfaceFormatKHR surface_format; - VkSurfaceKHR platform_surface; - VkSwapchainKHR swapchain; + VkSurfaceKHR platform_surface = VK_NULL_HANDLE; + VkSwapchainKHR swapchain = VK_NULL_HANDLE; size_t swapchain_images_count = 3; std::vector swapchain_images; std::vector swapchain_images_views; uint32_t current_image_index; - struct input_data* mapped_data; + struct input_data* mapped_data; + + window& wnd; }; #endif // !__VK_RENDERER_HPP_ -- cgit v1.3