From 78db82c0dac8db90a3de1004e5428f225947b2b9 Mon Sep 17 00:00:00 2001 From: Frederico Linhares Date: Wed, 21 Sep 2022 13:57:31 -0300 Subject: feat Create View2D --- src/vk/renderer.cpp | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'src/vk/renderer.cpp') diff --git a/src/vk/renderer.cpp b/src/vk/renderer.cpp index 7531e19..5ebc271 100644 --- a/src/vk/renderer.cpp +++ b/src/vk/renderer.cpp @@ -29,8 +29,10 @@ load_descriptor_pool(void *obj) auto self = static_cast(obj); uint32_t uniform_buffer_count = 0; - for(auto &view : self->views) + for(auto &view : self->views_3d) uniform_buffer_count += (view->ub_3d.size() + view->ub_2d.size()); + for(auto &view : self->views_2d) + uniform_buffer_count += (view->ub_2d.size()); VkDescriptorPoolSize descriptor_pool_size{}; descriptor_pool_size.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; @@ -49,7 +51,9 @@ load_descriptor_pool(void *obj) &self->descriptor_pool) != VK_SUCCESS) throw CommandError{"Failed to create a Vulkan descriptor pool."}; - for(auto &view : self->views) + for(auto &view : self->views_3d) + view->load_descriptor_sets(self->descriptor_pool); + for(auto &view : self->views_2d) view->load_descriptor_sets(self->descriptor_pool); } @@ -58,7 +62,8 @@ unload_descriptor_pool(void *obj) { auto self = static_cast(obj); - for(auto &view : self->views) view->unload_descriptor_sets(); + for(auto &view : self->views_3d) view->unload_descriptor_sets(); + for(auto &view : self->views_2d) view->unload_descriptor_sets(); vkDestroyDescriptorPool( cg_core.vk_device_with_swapchain->device, self->descriptor_pool, @@ -136,15 +141,18 @@ const CommandChain loader{ namespace VK { -Renderer::Renderer(std::vector> views): +Renderer::Renderer(std::vector> views_2d, + std::vector> views_3d): models_to_draw{cg_core.vk_swapchain->images_count}, - views{views} + views_2d{views_2d}, + views_3d{views_3d} { loader.execute(this); } -Renderer::Renderer(std::initializer_list> views): - Renderer{std::vector>(views)} +Renderer::Renderer(std::initializer_list> views_2d, + std::initializer_list> views_3d): + Renderer(std::vector(views_2d), std::vector(views_3d)) { } @@ -212,7 +220,7 @@ Renderer::draw() vkCmdBeginRenderPass( draw_command_buffer, &render_pass_begin, VK_SUBPASS_CONTENTS_INLINE); - for(auto &view: this->views) + for(auto &view: this->views_3d) cg_core.vk_graphics_pipeline_3d->draw( view, draw_command_buffer, cg_core.vk_swapchain->current_frame, image_index); @@ -239,7 +247,12 @@ Renderer::draw() vkCmdBeginRenderPass( draw_command_buffer, &render_pass_begin, VK_SUBPASS_CONTENTS_INLINE); - for(auto &view: this->views) + for(auto &view: this->views_2d) + cg_core.vk_graphics_pipeline_2d->draw( + view, draw_command_buffer, cg_core.vk_swapchain->current_frame, + next_frame, image_index); + + for(auto &view: this->views_3d) cg_core.vk_graphics_pipeline_2d->draw( view, draw_command_buffer, cg_core.vk_swapchain->current_frame, next_frame, image_index); -- cgit v1.2.3