Explorar o código

Solved bug with depth when drawing...

...shapes based on LINES, TRIANGLES and QUADS. Now the calling order of
the drawing functions is respected!
Ray %!s(int64=10) %!d(string=hai) anos
pai
achega
6ffb3c72fb
Modificáronse 1 ficheiros con 13 adicións e 3 borrados
  1. 13 3
      src/rlgl.c

+ 13 - 3
src/rlgl.c

@@ -200,6 +200,8 @@ static int currentMatrixMode;
 
 static DrawMode currentDrawMode;
 
+static float currentDepth = -1.0f;
+
 // Vertex arrays for lines, triangles and quads
 static VertexPositionColorBuffer lines;         // No texture support
 static VertexPositionColorBuffer triangles;     // No texture support
@@ -580,6 +582,11 @@ void rlEnd(void)
         } break;
         default: break;
     }
+    
+    // NOTE: Depth increment is dependant on rlOrtho(): z-near and z-far values,
+    // as well as depth buffer bit-depth (16bit or 24bit or 32bit)
+    // Correct increment formula would be: depthInc = (zfar - znear)/pow(2, bits)
+    currentDepth += (1.0f/20000.0f);
 }
 
 // Define one vertex (position)
@@ -648,13 +655,13 @@ void rlVertex3f(float x, float y, float z)
 // Define one vertex (position)
 void rlVertex2f(float x, float y)
 {
-    rlVertex3f(x, y, 0.0f);
+    rlVertex3f(x, y, currentDepth);
 }
 
 // Define one vertex (position)
 void rlVertex2i(int x, int y)
 {
-    rlVertex3f((float)x, (float)y, 0.0f);
+    rlVertex3f((float)x, (float)y, currentDepth);
 }
 
 // Define one vertex (texture coordinate)
@@ -1395,6 +1402,9 @@ void rlglDraw(void)
     quads.vCounter = 0;
     quads.tcCounter = 0;
     quads.cCounter = 0;
+    
+    // Reset depth for next draw
+    currentDepth = -1.0f;
 #endif
 }
 
@@ -1583,7 +1593,7 @@ void rlglInitGraphics(int offsetX, int offsetY, int width, int height)
     rlMatrixMode(RL_PROJECTION);                // Switch to PROJECTION matrix
     rlLoadIdentity();                           // Reset current matrix (PROJECTION)
 
-    rlOrtho(0, width - offsetX, height - offsetY, 0, 0, 1); // Config orthographic mode: top-left corner --> (0,0)
+    rlOrtho(0, width - offsetX, height - offsetY, 0, 0.0f, 1.0f); // Config orthographic mode: top-left corner --> (0,0)
 
     rlMatrixMode(RL_MODELVIEW);                 // Switch back to MODELVIEW matrix
     rlLoadIdentity();                           // Reset current matrix (MODELVIEW)