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 bool dynamicViewport = true; // If disabled the swapchains fullscreen viewport will always be used, regardless of framebuffer or viewport
Shader() = default; Shader() = default;
~Shader() override { /*if (renderShader) Shader::Close();*/ } ~Shader() override { if (renderShader) Shader::Close(); }
Shader& AddShaderProgram(const ShaderProgram& shaderProgram) Shader& AddShaderProgram(const ShaderProgram& shaderProgram)
{ {

View File

@@ -17,8 +17,15 @@ namespace OpenVulkano::Vulkan
VulkanShader::~VulkanShader() VulkanShader::~VulkanShader()
{ {
if (!shader) return; if (shader) Close();
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) void VulkanShader::Init(Context* context, Scene::Shader* shader, IShaderOwner* owner)
@@ -125,16 +132,9 @@ namespace OpenVulkano::Vulkan
void VulkanShader::Close() void VulkanShader::Close()
{ {
shader->renderShader = nullptr; 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; shader = nullptr;
if (owner) owner->RemoveShader(this); if (owner) owner->RemoveShader(this);
owner = nullptr;
} }
void VulkanShader::CreatePipelineLayout() void VulkanShader::CreatePipelineLayout()