Add VulkanTextureDynamic

This commit is contained in:
Georg Hagen
2024-07-07 00:24:51 +02:00
parent add09b59af
commit 2b05518c61
3 changed files with 25 additions and 17 deletions

View File

@@ -71,34 +71,38 @@ namespace OpenVulkano::Vulkan
}
}
void Record(VulkanDrawContext* context, int setId)
virtual void Record(VulkanDrawContext* context, int setId)
{
context->commandBuffer.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, context->GetShader()->pipelineLayout, setId, 1, &m_descriptorSet, 0, nullptr);
}
};
/*class VulkanTextureDynamic : VulkanTexture
class VulkanTextureDynamic : public VulkanTexture
{
public:
uint32_t lastUpdate = -1;
ResourceManager* resourceManager;
void Init(ResourceManager* resManager, Scene::Texture* texture) override
void Init(ResourceManager* resManager, Scene::Texture* texture, vk::DescriptorSetLayout* descriptorSetLayout, const DescriptorSetLayoutBinding& binding) override
{
resourceManager = resManager;
VulkanTexture::Init(resourceManager, texture);
lastUpdate = -1;
VulkanTexture::Init(resManager, texture, descriptorSetLayout, binding);
}
void Record(VulkanDrawContext* context) override
{
if(bufferId != lastUpdate && m_texture->updated)
if(m_texture->updated)
{
lastUpdate = bufferId;
resourceManager->CopyDataToImage(m_texture->size, m_texture->textureBuffer, this);
context->renderer->GetResourceManager().CopyDataToImage(m_texture->size, m_texture->textureBuffer, this);
m_texture->updated = false;
}
VulkanTexture::Record(cmdBuffer, bufferId);
VulkanTexture::Record(context);
}
};*/
void Record(VulkanDrawContext* context, int setId) override
{
if(m_texture->updated)
{
context->renderer->GetResourceManager().CopyDataToImage(m_texture->size, m_texture->textureBuffer, this);
m_texture->updated = false;
}
VulkanTexture::Record(context, setId);
}
};
}