Fix issue with freeing geometries
This commit is contained in:
@@ -85,6 +85,8 @@ namespace OpenVulkano::Vulkan
|
||||
cmdPools = nullptr;
|
||||
cmdBuffers = nullptr;
|
||||
semaphores = nullptr;
|
||||
geometries.clear();
|
||||
nodes.clear();
|
||||
device.destroyDescriptorPool(descriptorPool);
|
||||
allocations.clear();
|
||||
lastAllocation = nullptr;
|
||||
@@ -134,6 +136,7 @@ namespace OpenVulkano::Vulkan
|
||||
CreateDeviceOnlyBufferWithData(Utils::EnumAsInt(geometry->indexType) * geometry->GetIndexCount(), vk::BufferUsageFlagBits::eIndexBuffer, geometry->GetIndices()),
|
||||
freeFunction);
|
||||
VulkanGeometry* vkGeo = new VulkanGeometry(geometry, vertexBuffer, indexBuffer);
|
||||
geometries.emplace_back(vkGeo);
|
||||
geometry->renderGeo = vkGeo;
|
||||
return vkGeo;
|
||||
}
|
||||
@@ -176,6 +179,7 @@ namespace OpenVulkano::Vulkan
|
||||
uBuffer->Init(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 static_cast<VulkanNode*>(node->renderNode);
|
||||
}
|
||||
|
||||
@@ -49,6 +49,8 @@ namespace OpenVulkano
|
||||
vk::Semaphore* semaphores = nullptr;
|
||||
std::vector<std::unique_ptr<MemoryAllocation>> allocations;
|
||||
std::vector<std::unique_ptr<VulkanShader>> shaders;
|
||||
std::vector<std::unique_ptr<VulkanGeometry>> geometries;
|
||||
std::vector<std::unique_ptr<VulkanNode>> nodes;
|
||||
MemoryAllocation* lastAllocation = nullptr;
|
||||
std::mutex mutex;
|
||||
vk::DeviceSize uniformBufferAlignment;
|
||||
|
||||
@@ -57,6 +57,7 @@ namespace OpenVulkano::Vulkan
|
||||
|
||||
void Close() override
|
||||
{
|
||||
m_geometry->renderGeo = nullptr;
|
||||
m_vertexBuffer.reset();
|
||||
m_indexBuffer.reset();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user