From 25917d1cac0605ae7d1e302f24ff0ebfff5d4e81 Mon Sep 17 00:00:00 2001 From: bkaradzic Date: Thu, 3 Oct 2013 20:39:55 -0700 Subject: [PATCH] Fixed shader and program cleanup. --- src/renderer_gl.cpp | 8 ++++++-- src/renderer_gl.h | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 2067736b..49217470 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -1071,8 +1071,12 @@ namespace bgfx } m_numPredefined = 0; - GL_CHECK(glUseProgram(0) ); - GL_CHECK(glDeleteProgram(m_id) ); + if (0 != m_id) + { + GL_CHECK(glUseProgram(0) ); + GL_CHECK(glDeleteProgram(m_id) ); + m_id = 0; + } m_vcref.invalidate(s_renderCtx->m_vaoStateCache); } diff --git a/src/renderer_gl.h b/src/renderer_gl.h index 3da047cd..5d6a1d1c 100755 --- a/src/renderer_gl.h +++ b/src/renderer_gl.h @@ -583,6 +583,11 @@ namespace bgfx struct Shader { + Shader() + : m_id(0) + { + } + void create(GLenum _type, Memory* _mem) { m_id = glCreateShader(_type); @@ -622,7 +627,11 @@ namespace bgfx void destroy() { - GL_CHECK(glDeleteShader(m_id) ); + if (0 != m_id) + { + GL_CHECK(glDeleteShader(m_id) ); + m_id = 0; + } } GLuint m_id; @@ -657,7 +666,8 @@ namespace bgfx struct Program { Program() - : m_constantBuffer(NULL) + : m_id(0) + , m_constantBuffer(NULL) , m_numPredefined(0) { }