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

@ -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