aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2014-07-23 01:25:33 +0200
committerraysan5 <raysan5@gmail.com>2014-07-23 01:25:33 +0200
commitecb3c47704ccaa349ee4824b019181d700919582 (patch)
treeef3059010117ac78c1548494903a9c60c71b149c /src
parent0b03431c95c3c348aa686c1a3df68a51bd7761a6 (diff)
downloadraylib-ecb3c47704ccaa349ee4824b019181d700919582.tar.gz
raylib-ecb3c47704ccaa349ee4824b019181d700919582.zip
Corrected bug with drawing order
We have three vertex buffers: lines, triangles and quads for textures. Drawing in a desired order could become a nighmare... noww it seems it works prety well...
Diffstat (limited to 'src')
-rw-r--r--src/rlgl.c22
-rw-r--r--src/shapes.c25
2 files changed, 36 insertions, 11 deletions
diff --git a/src/rlgl.c b/src/rlgl.c
index c181c7d6..75978e11 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -825,7 +825,17 @@ void rlglDraw()
glUniformMatrix4fv(modelviewMatrixLoc, 1, false, GetMatrixVector(modelview));
glUniform1i(textureLoc, 0);
- // NOTE: We draw in this order: textured quads, triangles shapes, lines
+ // NOTE: We draw in this order: triangle shapes, textured quads and lines
+
+ if (triangles.vCounter > 0)
+ {
+ glBindTexture(GL_TEXTURE_2D, whiteTexture);
+
+ glBindVertexArray(vaoTriangles);
+ glDrawArrays(GL_TRIANGLES, 0, triangles.vCounter);
+
+ glBindTexture(GL_TEXTURE_2D, 0);
+ }
if (quads.vCounter > 0)
{
@@ -855,16 +865,6 @@ void rlglDraw()
glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures
}
- if (triangles.vCounter > 0)
- {
- glBindTexture(GL_TEXTURE_2D, whiteTexture);
-
- glBindVertexArray(vaoTriangles);
- glDrawArrays(GL_TRIANGLES, 0, triangles.vCounter);
-
- glBindTexture(GL_TEXTURE_2D, 0);
- }
-
if (lines.vCounter > 0)
{
glBindTexture(GL_TEXTURE_2D, whiteTexture);
diff --git a/src/shapes.c b/src/shapes.c
index 2c589512..ad02de17 100644
--- a/src/shapes.c
+++ b/src/shapes.c
@@ -180,6 +180,7 @@ void DrawRectangleGradient(int posX, int posY, int width, int height, Color colo
// Draw a color-filled rectangle (Vector version)
void DrawRectangleV(Vector2 position, Vector2 size, Color color)
{
+/*
rlBegin(RL_TRIANGLES);
rlColor4ub(color.r, color.g, color.b, color.a);
@@ -191,6 +192,30 @@ void DrawRectangleV(Vector2 position, Vector2 size, Color color)
rlVertex2i(position.x + size.x, position.y + size.y);
rlVertex2i(position.x + size.x, position.y);
rlEnd();
+*/
+
+ // NOTE: This shape uses QUADS to avoid drawing order issues (view rlglDraw)
+
+ rlEnableTexture(1); // Default white texture
+
+ rlBegin(RL_QUADS);
+ rlColor4ub(color.r, color.g, color.b, color.a);
+ rlNormal3f(0.0f, 0.0f, 1.0f); // Normal Pointing Towards Viewer
+
+ rlTexCoord2f(0.0f, 0.0f);
+ rlVertex2f(position.x, position.y);
+
+ rlTexCoord2f(0.0f, 1.0f);
+ rlVertex2f(position.x, position.y + size.y);
+
+ rlTexCoord2f(1.0f, 1.0f);
+ rlVertex2f(position.x + size.x, position.y + size.y);
+
+ rlTexCoord2f(1.0f, 0.0f);
+ rlVertex2f(position.x + size.x, position.y);
+ rlEnd();
+
+ rlDisableTexture();
}
// Draw rectangle outline