From e8ca8161c857c14bee60451b6301afd10c71f6fc Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Fri, 20 Jun 2025 12:48:35 +0800 Subject: [PATCH] [Fix] (Diligent/Shader): Do not delete the Diligent shader obj when glDeleteShader is called. --- MG/MG_GL/Implementations/GL/Program/GL_Program.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MG/MG_GL/Implementations/GL/Program/GL_Program.cpp b/MG/MG_GL/Implementations/GL/Program/GL_Program.cpp index 3ed7db7e..e861008e 100644 --- a/MG/MG_GL/Implementations/GL/Program/GL_Program.cpp +++ b/MG/MG_GL/Implementations/GL/Program/GL_Program.cpp @@ -223,6 +223,8 @@ namespace MG_GL::GL { MG_Util::Debug::LogD("glDeleteShader, shader: %u", shader); GLenum result = MG_State::DeleteShader(shader); if (result == GL_NO_ERROR) { + // Do not delete the shader object since it may be used in glDraw*. + /* auto it = MG_Diligent::g_ShaderMap.find(shader); if (it != MG_Diligent::g_ShaderMap.end()) { if (it->second) { @@ -231,6 +233,7 @@ namespace MG_GL::GL { MG_Diligent::g_ShaderMap.erase(it); } return; + */ } MG_State::SetError(result); MG_Util::Debug::LogE("Error deleting shader: %s", MG_Util::Debug::GLEnumToString(result));