Fix shader Close
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user