Don't crash if shaders are unavailable

This commit is contained in:
Hannu Hanhi 2020-04-21 23:45:48 +03:00
parent 812cceb53f
commit e45295f1ea

View file

@ -791,6 +791,8 @@ EXPORT void HWRAPI(LoadShaders) (void)
GLuint gl_vertShader, gl_fragShader; GLuint gl_vertShader, gl_fragShader;
GLint i, result; GLint i, result;
if (!pglUseProgram) return;
gl_customvertexshaders[0] = NULL; gl_customvertexshaders[0] = NULL;
gl_customfragmentshaders[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) EXPORT void HWRAPI(LoadCustomShader) (int number, char *shader, size_t size, boolean fragment)
{ {
#ifdef GL_SHADERS #ifdef GL_SHADERS
if (!pglUseProgram) return;
if (number < 1 || number > MAXSHADERS) if (number < 1 || number > MAXSHADERS)
I_Error("LoadCustomShader(): cannot load shader %d (max %d)", 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_shadersenabled = false;
gl_currentshaderprogram = 0; gl_currentshaderprogram = 0;
gl_shaderprogramchanged = true;// not sure if this is needed gl_shaderprogramchanged = true;// not sure if this is needed
if (!pglUseProgram) return;
pglUseProgram(0); pglUseProgram(0);
#endif #endif
} }
@ -1672,7 +1676,7 @@ EXPORT void HWRAPI(SetTexture) (FTextureInfo *pTexInfo)
static void load_shaders(FSurfaceInfo *Surface, GLRGBAFloat *poly, GLRGBAFloat *tint, GLRGBAFloat *fade) static void load_shaders(FSurfaceInfo *Surface, GLRGBAFloat *poly, GLRGBAFloat *tint, GLRGBAFloat *fade)
{ {
#ifdef GL_SHADERS #ifdef GL_SHADERS
if (gl_shadersenabled) if (gl_shadersenabled && pglUseProgram)
{ {
gl_shaderprogram_t *shader = &gl_shaderprograms[gl_currentshaderprogram]; gl_shaderprogram_t *shader = &gl_shaderprograms[gl_currentshaderprogram];
if (shader->program) if (shader->program)
@ -1760,9 +1764,7 @@ static void load_shaders(FSurfaceInfo *Surface, GLRGBAFloat *poly, GLRGBAFloat *
else else
pglUseProgram(0); pglUseProgram(0);
} }
else
#endif #endif
pglUseProgram(0);
} }
// unfinished draw call batching // unfinished draw call batching