Cleanup shader handling

This commit is contained in:
2023-08-05 21:01:11 +02:00
parent 836e9dce42
commit da1782c4a9
9 changed files with 28 additions and 24 deletions

View File

@@ -61,10 +61,7 @@ namespace openVulkanoCpp::Vulkan
device.freeCommandBuffers(cmdPools[i], 1, &cmdBuffers[i]);
device.destroyCommandPool(cmdPools[i]);
}
for (auto shader : shaders)
{
shader->Close();
}
shaders.clear();
cmdBuffers = nullptr;
cmdPools = nullptr;
device = nullptr;
@@ -88,7 +85,7 @@ namespace openVulkanoCpp::Vulkan
void ResourceManager::Resize()
{
for (auto shader : shaders)
for (auto& shader : shaders)
{
shader->Resize();
}
@@ -173,7 +170,12 @@ namespace openVulkanoCpp::Vulkan
void ResourceManager::RemoveShader(VulkanShader* shader)
{
Utils::Remove(shaders, shader);
const std::unique_lock lock(mutex);
std::vector<std::unique_ptr<VulkanShader>>::iterator object =
find_if(shaders.begin(), shaders.end(),
[&](auto& obj){ return obj.get() == shader; }
);
shaders.erase(object);
}
void ResourceManager::FreeBuffer(ManagedBuffer* buffer)
@@ -267,9 +269,10 @@ namespace openVulkanoCpp::Vulkan
VulkanShader* ResourceManager::CreateShader(Scene::Shader* shader)
{
const std::unique_lock lock(mutex);
VulkanShader* vkShader = new VulkanShader();
vkShader->Init(context, shader, this);
shaders.push_back(vkShader);
shaders.emplace_back(vkShader);
return vkShader;
}