diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-01-17 20:54:11 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-01-17 20:54:11 +0100 |
| commit | 25125b2e23c02199bdefb3a638584465229fd833 (patch) | |
| tree | f52891f855f3cf78f3f97cd5c38fe23e55a0424d /include/vk-renderer.hpp | |
| parent | dfc9a9b37d544d3a357b560829d2a9a48e5e5f5b (diff) | |
Handle window resize
Diffstat (limited to 'include/vk-renderer.hpp')
| -rw-r--r-- | include/vk-renderer.hpp | 48 |
1 files changed, 20 insertions, 28 deletions
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<VkSemaphore> 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<VkImage> swapchain_images; std::vector<VkImageView> swapchain_images_views; uint32_t current_image_index; - struct input_data* mapped_data; + struct input_data* mapped_data; + + window& wnd; }; #endif // !__VK_RENDERER_HPP_ |
