#ifndef __VK_RENDERER_HPP_ #define __VK_RENDERER_HPP_ #include #include "vk-api.hpp" #include "vulkan-loader.hpp" class input_data; class window; class vkrenderer { public: vkrenderer(window& wnd, const input_data& inputs); ~vkrenderer(); void begin_frame(); void ui(); void compute(uint32_t width, uint32_t height, bool clear); void finish_frame(); void recreate_swapchain(); Buffer compute_shader_buffer; private: void handle_swapchain_result(VkResult function_result); vkapi api; uint64_t frame_index = 0; uint32_t swapchain_image_index = 0; std::vector accumulation_images; Image ui_texture; std::vector command_buffers; // TODO: Maybe use a map in the future std::vector compute_sets_bindings; std::vector compute_shader_sets; Pipeline compute_pipeline; Buffer vertex_buffer; Buffer index_buffer; std::vector ui_sets_bindings; std::vector>ui_vertex_buffers; std::vector>ui_index_buffers; std::vector ui_sets; Pipeline ui_pipeline; VkRenderPass render_pass; std::vector framebuffers; std::vector submission_fences; std::vector execution_semaphores; std::vector acquire_semaphores; VkSurfaceKHR platform_surface; Swapchain swapchain; const uint32_t min_swapchain_image_count = 3; }; #endif // !__VK_RENDERER_HPP_