diff options
Diffstat (limited to 'src/vk/renderer.cpp')
-rw-r--r-- | src/vk/renderer.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
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<VK::Renderer*>(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<VK::Renderer*>(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<std::shared_ptr<View>> views): +Renderer::Renderer(std::vector<std::shared_ptr<View2D>> views_2d, + std::vector<std::shared_ptr<View3D>> 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<std::shared_ptr<View>> views): - Renderer{std::vector<std::shared_ptr<View>>(views)} +Renderer::Renderer(std::initializer_list<std::shared_ptr<View2D>> views_2d, + std::initializer_list<std::shared_ptr<View3D>> 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); |