Fix shader Close

This commit is contained in:
Georg Hagen
2024-08-01 11:12:01 +02:00
parent e54404ec61
commit 95627fe53a
2 changed files with 11 additions and 11 deletions

View File

@@ -96,7 +96,7 @@ namespace OpenVulkano::Scene
bool dynamicViewport = true; // If disabled the swapchains fullscreen viewport will always be used, regardless of framebuffer or viewport
Shader() = default;
~Shader() override { /*if (renderShader) Shader::Close();*/ }
~Shader() override { if (renderShader) Shader::Close(); }
Shader& AddShaderProgram(const ShaderProgram& shaderProgram)
{

View File

@@ -17,8 +17,15 @@ namespace OpenVulkano::Vulkan
VulkanShader::~VulkanShader()
{
if (!shader) return;
Close();
if (shader) Close();
device.destroyPipeline(pipeline);
for(auto& shaderModule : shaderModules)
{
device.destroyShaderModule(shaderModule);
}
device.destroyPipelineLayout(pipelineLayout);
for(auto& descriptorSetLayout : descriptorSetLayouts)
device.destroyDescriptorSetLayout(descriptorSetLayout);
}
void VulkanShader::Init(Context* context, Scene::Shader* shader, IShaderOwner* owner)
@@ -125,16 +132,9 @@ namespace OpenVulkano::Vulkan
void VulkanShader::Close()
{
shader->renderShader = nullptr;
device.destroyPipeline(pipeline);
for(auto& shaderModule : shaderModules)
{
device.destroyShaderModule(shaderModule);
}
device.destroyPipelineLayout(pipelineLayout);
for(auto& descriptorSetLayout : descriptorSetLayouts)
device.destroyDescriptorSetLayout(descriptorSetLayout);
shader = nullptr;
if (owner) owner->RemoveShader(this);
owner = nullptr;
}
void VulkanShader::CreatePipelineLayout()