diff --git a/src/hardware/r_opengl/r_opengl.c b/src/hardware/r_opengl/r_opengl.c index 8d6ee3c7..4e5114e8 100644 --- a/src/hardware/r_opengl/r_opengl.c +++ b/src/hardware/r_opengl/r_opengl.c @@ -790,6 +790,8 @@ EXPORT void HWRAPI(LoadShaders) (void) #ifdef GL_SHADERS GLuint gl_vertShader, gl_fragShader; GLint i, result; + + if (!pglUseProgram) return; gl_customvertexshaders[0] = NULL; gl_customfragmentshaders[0] = NULL; @@ -902,6 +904,7 @@ EXPORT void HWRAPI(LoadShaders) (void) EXPORT void HWRAPI(LoadCustomShader) (int number, char *shader, size_t size, boolean fragment) { #ifdef GL_SHADERS + if (!pglUseProgram) return; if (number < 1 || number > MAXSHADERS) I_Error("LoadCustomShader(): cannot load shader %d (max %d)", number, MAXSHADERS); @@ -951,6 +954,7 @@ EXPORT void HWRAPI(UnSetShader) (void) gl_shadersenabled = false; gl_currentshaderprogram = 0; gl_shaderprogramchanged = true;// not sure if this is needed + if (!pglUseProgram) return; pglUseProgram(0); #endif } @@ -1672,7 +1676,7 @@ EXPORT void HWRAPI(SetTexture) (FTextureInfo *pTexInfo) static void load_shaders(FSurfaceInfo *Surface, GLRGBAFloat *poly, GLRGBAFloat *tint, GLRGBAFloat *fade) { #ifdef GL_SHADERS - if (gl_shadersenabled) + if (gl_shadersenabled && pglUseProgram) { gl_shaderprogram_t *shader = &gl_shaderprograms[gl_currentshaderprogram]; if (shader->program) @@ -1760,9 +1764,7 @@ static void load_shaders(FSurfaceInfo *Surface, GLRGBAFloat *poly, GLRGBAFloat * else pglUseProgram(0); } - else #endif - pglUseProgram(0); } // unfinished draw call batching