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