diff --git a/src/client/refresh/gl3/gl3_mesh.c b/src/client/refresh/gl3/gl3_mesh.c index 7c0f117c..37a6fbca 100644 --- a/src/client/refresh/gl3/gl3_mesh.c +++ b/src/client/refresh/gl3/gl3_mesh.c @@ -675,7 +675,7 @@ GL3_DrawAliasModel(entity_t *e) { gl3state.uni3DData.transProjMat4.Elements[0][i] = -gl3state.uni3DData.transProjMat4.Elements[0][i]; } - GL3_UpdateUBO3D(); + //GL3_UpdateUBO3D(); Note: GL3_RotateForEntity() will call this,no need to do it twice before drawing glCullFace(GL_BACK); } diff --git a/src/client/refresh/gl3/gl3_shaders.c b/src/client/refresh/gl3/gl3_shaders.c index bf5202a1..8fb4132f 100644 --- a/src/client/refresh/gl3/gl3_shaders.c +++ b/src/client/refresh/gl3/gl3_shaders.c @@ -697,6 +697,22 @@ void GL3_ShutdownShaders(void) glDeleteProgram(gl3state.si3D.shaderProgram); memset(&gl3state.si3D, 0, sizeof(gl3ShaderInfo_t)); + if(gl3state.si3Dflow.shaderProgram != 0) + glDeleteProgram(gl3state.si3Dflow.shaderProgram); + memset(&gl3state.si3Dflow, 0, sizeof(gl3ShaderInfo_t)); + + if(gl3state.si3Dturb.shaderProgram != 0) + glDeleteProgram(gl3state.si3Dturb.shaderProgram); + memset(&gl3state.si3Dturb, 0, sizeof(gl3ShaderInfo_t)); + + if(gl3state.si3Dalias.shaderProgram != 0) + glDeleteProgram(gl3state.si3Dalias.shaderProgram); + memset(&gl3state.si3Dalias, 0, sizeof(gl3ShaderInfo_t)); + + if(gl3state.si3DaliasColor.shaderProgram != 0) + glDeleteProgram(gl3state.si3DaliasColor.shaderProgram); + memset(&gl3state.si3DaliasColor, 0, sizeof(gl3ShaderInfo_t)); + glDeleteBuffers(3, &gl3state.uniCommonUBO); gl3state.uniCommonUBO = gl3state.uni2DUBO = gl3state.uni3DUBO = 0; } diff --git a/src/client/refresh/gl3/header/local.h b/src/client/refresh/gl3/header/local.h index 818b9f83..5fb94053 100644 --- a/src/client/refresh/gl3/header/local.h +++ b/src/client/refresh/gl3/header/local.h @@ -387,6 +387,8 @@ extern void GL3_DrawBrushModel(entity_t *e); extern void GL3_DrawWorld(void); extern void GL3_MarkLeaves(void); +// gl3_mesh.c +extern void GL3_DrawAliasModel(entity_t *e); // gl3_shaders.c