Вынес управление VkDescriptorSetLayout и VkPipeline в отдельные классы

This commit is contained in:
Jiga228
2026-06-25 20:08:11 +07:00
parent 2a57a30e29
commit 5f3c5d4fc1
11 changed files with 277 additions and 196 deletions
@@ -0,0 +1,30 @@
#include "DescriptorSetLayout.hpp"
#include <stdexcept>
#include <string>
#include "Device.hpp"
#include "DeviceFunctions/DeviceFunctions.hpp"
VkObjects::DescriptorSetLayout::DescriptorSetLayout(const Device& device):device_(device)
{
VkDescriptorSetLayoutBinding ubo_layout_binding;
ubo_layout_binding.binding = 0;
ubo_layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
ubo_layout_binding.descriptorCount = 1;
ubo_layout_binding.stageFlags = VK_SHADER_STAGE_VERTEX_BIT;
ubo_layout_binding.pImmutableSamplers = nullptr;
VkDescriptorSetLayoutCreateInfo ubo_layout_info{};
ubo_layout_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
ubo_layout_info.bindingCount = 1;
ubo_layout_info.pBindings = &ubo_layout_binding;
VK_CHECK(vkCreateDescriptorSetLayout(device_.get_native(), &ubo_layout_info, nullptr, &layout_binding_))
}
VkObjects::DescriptorSetLayout::~DescriptorSetLayout()
{
if (layout_binding_ != nullptr)
vkDestroyDescriptorSetLayout(device_.get_native(), layout_binding_, nullptr);
}