summaryrefslogtreecommitdiff
path: root/src/vk/renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vk/renderer.cpp')
-rw-r--r--src/vk/renderer.cpp31
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);