diff options
| author | Ray <[email protected]> | 2022-01-08 19:55:14 +0100 |
|---|---|---|
| committer | Ray <[email protected]> | 2022-01-08 19:55:14 +0100 |
| commit | 612c4ad1dcee45a83bfbad78b7a583099024a22a (patch) | |
| tree | 196e73d6c66ca4232bd7cf29128960221a21497e /src/rlgl.h | |
| parent | fbf34f7c0d41b7281b195a082b3370a72e193150 (diff) | |
| download | raylib-612c4ad1dcee45a83bfbad78b7a583099024a22a.tar.gz raylib-612c4ad1dcee45a83bfbad78b7a583099024a22a.zip | |
Reviewed possible issue with shaders detaching
Diffstat (limited to 'src/rlgl.h')
| -rw-r--r-- | src/rlgl.h | 27 |
1 files changed, 15 insertions, 12 deletions
@@ -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) |
