Add render resouce
This commit is contained in:
@@ -183,7 +183,7 @@ namespace OpenVulkano::Vulkan
|
||||
VulkanNode* ResourceManager::PrepareNode(Scene::Node* node)
|
||||
{
|
||||
const std::unique_lock lock(mutex);
|
||||
if (!node->renderNode)
|
||||
if (!node->HasRenderResource())
|
||||
{
|
||||
UniformBuffer* uBuffer = new UniformBuffer();
|
||||
ManagedBuffer::Ptr buffer;
|
||||
@@ -193,23 +193,22 @@ namespace OpenVulkano::Vulkan
|
||||
if (node->GetUpdateFrequency() != Scene::UpdateFrequency::Never)
|
||||
{
|
||||
frameSize = allocSize;
|
||||
vkNode = new VulkanNodeDynamic();
|
||||
vkNode = new VulkanNodeDynamic(node, uBuffer);
|
||||
const uint32_t imgs = context->swapChain.GetImageCount();
|
||||
buffer = memPool.CreateBuffer(imgs * allocSize, vk::BufferUsageFlagBits::eUniformBuffer, vk::MemoryPropertyFlagBits::eHostCoherent | vk::MemoryPropertyFlagBits::eHostVisible);
|
||||
buffer->Map();
|
||||
}
|
||||
else
|
||||
{
|
||||
vkNode = new VulkanNode();
|
||||
buffer = CreateDeviceOnlyBufferWithData(Scene::Node::SIZE, vk::BufferUsageFlagBits::eUniformBuffer, &node->worldMat);
|
||||
vkNode = new VulkanNode(node, uBuffer);
|
||||
}
|
||||
|
||||
uBuffer->Init(std::move(buffer), frameSize, allocSize, GetDescriptorLayoutSet(Scene::Node::DESCRIPTOR_SET_LAYOUT_BINDING), Scene::Node::DESCRIPTOR_SET_LAYOUT_BINDING, 0);
|
||||
vkNode->Init(node, uBuffer);
|
||||
node->renderNode = vkNode;
|
||||
nodes.emplace_back(vkNode);
|
||||
return vkNode;
|
||||
}
|
||||
return static_cast<VulkanNode*>(node->renderNode);
|
||||
return node->GetRenderResource();
|
||||
}
|
||||
|
||||
VulkanCamera* ResourceManager::PrepareCamera(Scene::Camera* camera)
|
||||
|
||||
Reference in New Issue
Block a user