summaryrefslogtreecommitdiffhomepage
path: root/src/rlgl.h
diff options
context:
space:
mode:
authorRay <[email protected]>2022-01-08 19:55:14 +0100
committerRay <[email protected]>2022-01-08 19:55:14 +0100
commit612c4ad1dcee45a83bfbad78b7a583099024a22a (patch)
tree196e73d6c66ca4232bd7cf29128960221a21497e /src/rlgl.h
parentfbf34f7c0d41b7281b195a082b3370a72e193150 (diff)
downloadraylib-612c4ad1dcee45a83bfbad78b7a583099024a22a.tar.gz
raylib-612c4ad1dcee45a83bfbad78b7a583099024a22a.zip
Reviewed possible issue with shaders detaching
Diffstat (limited to 'src/rlgl.h')
-rw-r--r--src/rlgl.h27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/rlgl.h b/src/rlgl.h
index fc5857b8..3ae8575f 100644
--- a/src/rlgl.h
+++ b/src/rlgl.h
@@ -3550,19 +3550,22 @@ unsigned int rlLoadShaderCode(const char *vsCode, const char *fsCode)
if ((vertexShaderId == RLGL.State.defaultVShaderId) && (fragmentShaderId == RLGL.State.defaultFShaderId)) id = RLGL.State.defaultShaderId;
else
{
- id = rlLoadShaderProgram(vertexShaderId, fragmentShaderId);
-
- if (vertexShaderId != RLGL.State.defaultVShaderId)
- {
- // Detach shader before deletion to make sure memory is freed
- glDetachShader(id, vertexShaderId);
- glDeleteShader(vertexShaderId);
- }
- if (fragmentShaderId != RLGL.State.defaultFShaderId)
+ if ((vertexShaderId != 0) && (fragmentShaderId != 0))
{
- // Detach shader before deletion to make sure memory is freed
- glDetachShader(id, fragmentShaderId);
- glDeleteShader(fragmentShaderId);
+ id = rlLoadShaderProgram(vertexShaderId, fragmentShaderId);
+
+ if (vertexShaderId != RLGL.State.defaultVShaderId)
+ {
+ // Detach shader before deletion to make sure memory is freed
+ glDetachShader(id, vertexShaderId);
+ glDeleteShader(vertexShaderId);
+ }
+ if (fragmentShaderId != RLGL.State.defaultFShaderId)
+ {
+ // Detach shader before deletion to make sure memory is freed
+ glDetachShader(id, fragmentShaderId);
+ glDeleteShader(fragmentShaderId);
+ }
}
if (id == 0)