Free resources when VulkanGeometry is freed
This commit is contained in:
@@ -14,7 +14,10 @@ namespace openVulkanoCpp::Vulkan
|
||||
{
|
||||
ResourceManager* ResourceManager::INSTANCE;
|
||||
|
||||
ResourceManager::ResourceManager() = default;
|
||||
ResourceManager::ResourceManager()
|
||||
{
|
||||
freeFunction = [this](ManagedBuffer* buffer) { this->FreeBuffer(buffer); };
|
||||
}
|
||||
|
||||
ResourceManager::~ResourceManager() noexcept
|
||||
{
|
||||
@@ -91,8 +94,12 @@ namespace openVulkanoCpp::Vulkan
|
||||
const std::unique_lock lock(mutex);
|
||||
if(!geometry->renderGeo)
|
||||
{
|
||||
ManagedBuffer* vertexBuffer = CreateDeviceOnlyBufferWithData(sizeof(Vertex) * geometry->GetVertexCount(), vk::BufferUsageFlagBits::eVertexBuffer, geometry->GetVertices());
|
||||
ManagedBuffer* indexBuffer = CreateDeviceOnlyBufferWithData(Utils::EnumAsInt(geometry->indexType) * geometry->GetIndexCount(), vk::BufferUsageFlagBits::eIndexBuffer, geometry->GetIndices());
|
||||
ManagedBuffer::Ptr vertexBuffer(
|
||||
CreateDeviceOnlyBufferWithData(sizeof(Vertex) * geometry->GetVertexCount(), vk::BufferUsageFlagBits::eVertexBuffer, geometry->GetVertices()),
|
||||
freeFunction);
|
||||
ManagedBuffer::Ptr indexBuffer(
|
||||
CreateDeviceOnlyBufferWithData(Utils::EnumAsInt(geometry->indexType) * geometry->GetIndexCount(), vk::BufferUsageFlagBits::eIndexBuffer, geometry->GetIndices()),
|
||||
freeFunction);
|
||||
VulkanGeometry* vkGeo = new VulkanGeometry(geometry, vertexBuffer, indexBuffer);
|
||||
geometry->renderGeo = vkGeo;
|
||||
return vkGeo;
|
||||
@@ -121,7 +128,7 @@ namespace openVulkanoCpp::Vulkan
|
||||
if (node->GetUpdateFrequency() != Scene::UpdateFrequency::Never)
|
||||
{
|
||||
vkNode = new VulkanNodeDynamic();
|
||||
uint32_t imgs = context->swapChain.GetImageCount();
|
||||
const uint32_t imgs = context->swapChain.GetImageCount();
|
||||
buffer = CreateBuffer(imgs * allocSize, vk::BufferUsageFlagBits::eUniformBuffer, vk::MemoryPropertyFlagBits::eHostCoherent | vk::MemoryPropertyFlagBits::eHostVisible);
|
||||
buffer->Map();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user