فهرست منبع

Reviewed possible issue with shaders detaching

Ray 3 سال پیش
والد
کامیت
612c4ad1dc
1فایلهای تغییر یافته به همراه15 افزوده شده و 12 حذف شده
  1. 15 12
      src/rlgl.h

+ 15 - 12
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)