Use RenderResource for uniform buffers
This commit is contained in:
@@ -6,42 +6,31 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Base/ICloseable.hpp"
|
||||
#include "IRecordable.hpp"
|
||||
#include "Scene/UniformBuffer.hpp"
|
||||
#include "Vulkan/Resources/UniformBuffer.hpp"
|
||||
|
||||
namespace OpenVulkano::Vulkan
|
||||
{
|
||||
class VulkanUniformBuffer : public IRecordable, public ICloseable
|
||||
class VulkanUniformBuffer : public IRenderResource<Scene::UniformBuffer>, public IRecordable
|
||||
{
|
||||
public:
|
||||
Scene::UniformBuffer* uBuffer = nullptr;
|
||||
UniformBuffer* buffer = nullptr;
|
||||
Unique<UniformBuffer> buffer = nullptr;
|
||||
|
||||
~VulkanUniformBuffer() override
|
||||
{
|
||||
if (uBuffer) VulkanUniformBuffer::Close();
|
||||
}
|
||||
~VulkanUniformBuffer() override = default;
|
||||
|
||||
virtual void Init(Scene::UniformBuffer* uBuffer, UniformBuffer* uniformBuffer)
|
||||
{
|
||||
this->uBuffer = uBuffer;
|
||||
this->buffer = uniformBuffer;
|
||||
uBuffer->renderBuffer = this;
|
||||
}
|
||||
VulkanUniformBuffer(Scene::UniformBuffer* sceneBuffer, UniformBuffer* uniformBuffer)
|
||||
: IRenderResource<Scene::UniformBuffer>(sceneBuffer), buffer(uniformBuffer)
|
||||
{}
|
||||
|
||||
void Record(VulkanDrawContext* context) override
|
||||
{
|
||||
buffer->Record(context);
|
||||
}
|
||||
|
||||
void Close() override
|
||||
void Release() override
|
||||
{
|
||||
if (uBuffer) uBuffer->renderBuffer = nullptr;
|
||||
delete buffer;
|
||||
uBuffer = nullptr;
|
||||
buffer = nullptr;
|
||||
//TODO
|
||||
}
|
||||
};
|
||||
|
||||
@@ -49,18 +38,16 @@ namespace OpenVulkano::Vulkan
|
||||
{
|
||||
uint32_t lastUpdate = 0;
|
||||
|
||||
void Init(Scene::UniformBuffer* buffer, UniformBuffer* uniformBuffer) override
|
||||
{
|
||||
VulkanUniformBuffer::Init(buffer, uniformBuffer);
|
||||
lastUpdate = -1;
|
||||
}
|
||||
VulkanUniformBufferDynamic(Scene::UniformBuffer* sceneBuffer, UniformBuffer* uniformBuffer)
|
||||
: VulkanUniformBuffer(sceneBuffer, uniformBuffer)
|
||||
{}
|
||||
|
||||
void Record(VulkanDrawContext* context) override
|
||||
{
|
||||
if(uBuffer->updated) //TODO fix
|
||||
if(GetOwner()->updated) //TODO fix
|
||||
{
|
||||
uBuffer->updated = false;
|
||||
buffer->Update(uBuffer->data, uBuffer->size, context->currentImageId);
|
||||
GetOwner()->updated = false;
|
||||
buffer->Update(GetOwner()->data, GetOwner()->size, context->currentImageId);
|
||||
}
|
||||
buffer->Record(context);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user