diff options
Diffstat (limited to 'src/vk/sprite.cpp')
-rw-r--r-- | src/vk/sprite.cpp | 61 |
1 files changed, 11 insertions, 50 deletions
diff --git a/src/vk/sprite.cpp b/src/vk/sprite.cpp index c2761f3..bc9cb57 100644 --- a/src/vk/sprite.cpp +++ b/src/vk/sprite.cpp @@ -20,7 +20,7 @@ #include "../core.hpp" #include "sprite.hpp" -#include "uniform_buffer_object.hpp" +#include "uniform_data_object.hpp" namespace { @@ -74,43 +74,20 @@ unload_mesh(void *obj) } void -load_uniform_buffers(void *obj) -{ - auto self = static_cast<SpriteBuilder*>(obj); - - self->sprite->ub_sprite_positions.reserve( - cg_core.vk_swapchain->images_count); - for(auto i{0}; i < cg_core.vk_swapchain->images_count; i++) - self->sprite->ub_sprite_positions.emplace_back( - cg_core.vk_device_with_swapchain, sizeof(VK::UBOVectors4D)); -} - -void -unload_uniform_buffers(void *obj) -{ - auto self = static_cast<SpriteBuilder*>(obj); - - self->sprite->ub_sprite_positions.clear(); -} - -void load_descriptor_set_pool(void *obj) { auto self = static_cast<SpriteBuilder*>(obj); - std::array<VkDescriptorPoolSize, 2> descriptor_pool_sizes{}; - descriptor_pool_sizes[0].type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; + std::array<VkDescriptorPoolSize, 1> descriptor_pool_sizes{}; + descriptor_pool_sizes[0].type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; descriptor_pool_sizes[0].descriptorCount = - self->sprite->ub_sprite_positions.size(); - descriptor_pool_sizes[1].type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - descriptor_pool_sizes[1].descriptorCount = - self->sprite->ub_sprite_positions.size(); + cg_core.vk_swapchain->images_count; VkDescriptorPoolCreateInfo pool_info{}; pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; pool_info.pNext = nullptr; pool_info.flags = 0; - pool_info.maxSets = self->sprite->ub_sprite_positions.size(); + pool_info.maxSets = cg_core.vk_swapchain->images_count; pool_info.poolSizeCount = descriptor_pool_sizes.size(); pool_info.pPoolSizes = descriptor_pool_sizes.data(); @@ -158,39 +135,24 @@ load_buffers_to_descriptor_sets(void *obj) { auto self = static_cast<SpriteBuilder*>(obj); - for(auto i{0}; i < self->sprite->ub_sprite_positions.size(); i++) + for(auto i{0}; i < cg_core.vk_swapchain->images_count; i++) { - VkDescriptorBufferInfo buffer_info{}; - buffer_info.buffer = self->sprite->ub_sprite_positions[i].buffer; - buffer_info.offset = 0; - buffer_info.range = sizeof(VK::UBOVectors4D); - VkDescriptorImageInfo image_info{}; image_info.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; image_info.imageView = self->sprite->texture->view; image_info.sampler = self->sprite->texture->sampler; - std::array<VkWriteDescriptorSet, 2> write_descriptors{}; + std::array<VkWriteDescriptorSet, 1> write_descriptors{}; write_descriptors[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; write_descriptors[0].dstSet = self->sprite->descriptor_sets[i]; write_descriptors[0].dstBinding = 0; write_descriptors[0].dstArrayElement = 0; write_descriptors[0].descriptorCount = 1; - write_descriptors[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - write_descriptors[0].pBufferInfo = &buffer_info; - write_descriptors[0].pImageInfo = nullptr; - write_descriptors[0].pTexelBufferView = nullptr; - - write_descriptors[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - write_descriptors[1].dstSet = self->sprite->descriptor_sets[i]; - write_descriptors[1].dstBinding = 1; - write_descriptors[1].dstArrayElement = 0; - write_descriptors[1].descriptorCount = 1; - write_descriptors[1].descriptorType = + write_descriptors[0].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - write_descriptors[1].pBufferInfo = nullptr; - write_descriptors[1].pImageInfo = &image_info; - write_descriptors[1].pTexelBufferView = nullptr; + write_descriptors[0].pBufferInfo = nullptr; + write_descriptors[0].pImageInfo = &image_info; + write_descriptors[0].pTexelBufferView = nullptr; vkUpdateDescriptorSets( cg_core.vk_device_with_swapchain->device, write_descriptors.size(), @@ -200,7 +162,6 @@ load_buffers_to_descriptor_sets(void *obj) static const CommandChain loader{ {&load_mesh, &unload_mesh}, - {&load_uniform_buffers, &unload_uniform_buffers}, {&load_descriptor_set_pool, &unload_descriptor_set_pool}, {&load_descriptor_sets, nullptr}, {&load_buffers_to_descriptor_sets, nullptr}, |