Corrected crash on shader loading

If shader file could not be found on loading it crashed, instead added
fallback to default shader!
This commit is contained in:
Ray
2017-12-13 20:10:13 +01:00
parent a6f9cc5629
commit 2388cbc3cd

View File

@@ -2365,24 +2365,34 @@ Shader LoadShader(char *vsFileName, char *fsFileName)
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
unsigned int vertexShaderId, fragmentShaderId; unsigned int vertexShaderId = defaultVShaderId;
unsigned int fragmentShaderId = defaultFShaderId;
if (vsFileName == NULL) vertexShaderId = defaultVShaderId; if (vsFileName != NULL)
else
{ {
char *vShaderStr = LoadText(vsFileName); char *vShaderStr = LoadText(vsFileName);
if (vShaderStr != NULL)
{
vertexShaderId = CompileShader(vShaderStr, GL_VERTEX_SHADER); vertexShaderId = CompileShader(vShaderStr, GL_VERTEX_SHADER);
free(vShaderStr); free(vShaderStr);
} }
}
if (fsFileName == NULL) fragmentShaderId = defaultVShaderId; if (fsFileName != NULL)
else
{ {
char* fShaderStr = LoadText(fsFileName); char* fShaderStr = LoadText(fsFileName);
if (fShaderStr != NULL)
{
fragmentShaderId = CompileShader(fShaderStr, GL_FRAGMENT_SHADER); fragmentShaderId = CompileShader(fShaderStr, GL_FRAGMENT_SHADER);
free(fShaderStr); free(fShaderStr);
} }
}
if ((vertexShaderId == defaultVShaderId) && (fragmentShaderId == defaultFShaderId)) shader = defaultShader;
else
{
shader.id = LoadShaderProgram(vertexShaderId, fragmentShaderId); shader.id = LoadShaderProgram(vertexShaderId, fragmentShaderId);
if (vertexShaderId != defaultVShaderId) glDeleteShader(vertexShaderId); if (vertexShaderId != defaultVShaderId) glDeleteShader(vertexShaderId);
@@ -2396,6 +2406,7 @@ Shader LoadShader(char *vsFileName, char *fsFileName)
// After shader loading, we TRY to set default location names // After shader loading, we TRY to set default location names
if (shader.id > 0) SetShaderDefaultLocations(&shader); if (shader.id > 0) SetShaderDefaultLocations(&shader);
}
// Get available shader uniforms // Get available shader uniforms
// NOTE: This information is useful for debug... // NOTE: This information is useful for debug...