Allow custom input descriptors
This commit is contained in:
@@ -189,6 +189,18 @@ namespace openVulkanoCpp::Vulkan
|
||||
}
|
||||
}
|
||||
|
||||
UniformBuffer* ResourceManager::CreateUniformBuffer(const DescriptorSetLayoutBinding& binding, size_t size, void* data, uint32_t setId)
|
||||
{
|
||||
const std::unique_lock lock(mutex);
|
||||
const vk::DeviceSize allocSize = Utils::Align(size, uniformBufferAlignment);
|
||||
|
||||
auto buffer = CreateDeviceOnlyBufferWithData(allocSize, vk::BufferUsageFlagBits::eUniformBuffer, data);
|
||||
|
||||
UniformBuffer* uBuffer = new UniformBuffer();
|
||||
uBuffer->Init(buffer, 0, allocSize, GetDescriptorLayoutSet(binding), binding, setId);
|
||||
return uBuffer;
|
||||
}
|
||||
|
||||
vk::DescriptorSetLayout* ResourceManager::GetDescriptorLayoutSet(const DescriptorSetLayoutBinding& descriptorSetLayoutBinding)
|
||||
{
|
||||
auto& layout = descriptorSetLayoutCache[descriptorSetLayoutBinding];
|
||||
|
||||
@@ -97,6 +97,8 @@ namespace openVulkanoCpp
|
||||
|
||||
[[nodiscard]] vk::Device GetDevice() const { return device; }
|
||||
|
||||
UniformBuffer* CreateUniformBuffer(const DescriptorSetLayoutBinding& binding, size_t size, void* data, uint32_t setId = 2);
|
||||
|
||||
protected: // Allocation management
|
||||
void DoFreeBuffer(ManagedBuffer* buffer);
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace openVulkanoCpp::Vulkan
|
||||
void Record(VulkanDrawContext* drawContext) override
|
||||
{
|
||||
uint32_t frameOffset = m_frameOffset * drawContext->currentImageId;
|
||||
drawContext->commandBuffer.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, drawContext->GetShader()->pipelineLayout, m_setOffset, m_setCount, &m_descriptorSet, 1, &frameOffset);
|
||||
drawContext->commandBuffer.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, drawContext->GetShader()->pipelineLayout, m_setOffset, m_setCount, &m_descriptorSet, (m_frameOffset) ? 1 : 0, &frameOffset);
|
||||
}
|
||||
|
||||
void Update(void* data, uint32_t size, uint32_t bufferId) const
|
||||
|
||||
Reference in New Issue
Block a user