[WIP] Refactor creation of descriptorsets
This commit is contained in:
@@ -11,50 +11,47 @@
|
||||
#include "Scene/Camera.hpp"
|
||||
#include "Vulkan/Resources/UniformBuffer.hpp"
|
||||
|
||||
namespace openVulkanoCpp
|
||||
namespace openVulkanoCpp::Vulkan
|
||||
{
|
||||
namespace Vulkan
|
||||
struct VulkanNode : IRecordable, ICloseable
|
||||
{
|
||||
struct VulkanNode : IRecordable, ICloseable
|
||||
Scene::Node* node = nullptr;
|
||||
UniformBuffer* buffer = nullptr;
|
||||
|
||||
virtual void Init(Scene::Node* node, UniformBuffer* uniformBuffer)
|
||||
{
|
||||
Scene::Node* node = nullptr;
|
||||
UniformBuffer* buffer = nullptr;
|
||||
this->node = node;
|
||||
this->buffer = uniformBuffer;
|
||||
}
|
||||
|
||||
virtual void Init(Scene::Node* node, UniformBuffer* uniformBuffer)
|
||||
{
|
||||
this->node = node;
|
||||
this->buffer = uniformBuffer;
|
||||
}
|
||||
|
||||
void Record(vk::CommandBuffer& cmdBuffer, uint32_t bufferId) override
|
||||
{
|
||||
buffer->Record(cmdBuffer, 0);
|
||||
}
|
||||
|
||||
void Close() override {}
|
||||
};
|
||||
|
||||
struct VulkanNodeDynamic : VulkanNode
|
||||
void Record(VulkanDrawContext* context) override
|
||||
{
|
||||
uint32_t lastUpdate = -1;
|
||||
buffer->Record(context);
|
||||
}
|
||||
|
||||
void Init(Scene::Node* node, UniformBuffer* uniformBuffer) override
|
||||
void Close() override {}
|
||||
};
|
||||
|
||||
struct VulkanNodeDynamic : VulkanNode
|
||||
{
|
||||
uint32_t lastUpdate = -1;
|
||||
|
||||
void Init(Scene::Node* node, UniformBuffer* uniformBuffer) override
|
||||
{
|
||||
VulkanNode::Init(node, uniformBuffer);
|
||||
lastUpdate = -1;
|
||||
}
|
||||
|
||||
void Record(VulkanDrawContext* context) override
|
||||
{
|
||||
//if(context->currentImageId != lastUpdate) //TODO fix
|
||||
{
|
||||
VulkanNode::Init(node, uniformBuffer);
|
||||
lastUpdate = -1;
|
||||
//lastUpdate = bufferId;
|
||||
buffer->Update(&node->worldMat, sizeof(Math::Matrix4f), context->currentImageId);
|
||||
}
|
||||
buffer->Record(context);
|
||||
}
|
||||
|
||||
void Record(vk::CommandBuffer& cmdBuffer, uint32_t bufferId) override
|
||||
{
|
||||
if(bufferId != lastUpdate)
|
||||
{
|
||||
lastUpdate = bufferId;
|
||||
buffer->Update(&node->worldMat, sizeof(Math::Matrix4f), bufferId);
|
||||
}
|
||||
buffer->Record(cmdBuffer, bufferId);
|
||||
}
|
||||
|
||||
void Close() override{}
|
||||
};
|
||||
}
|
||||
void Close() override{}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user