diff options
| author | raysan5 <raysan5@gmail.com> | 2014-07-23 01:25:33 +0200 |
|---|---|---|
| committer | raysan5 <raysan5@gmail.com> | 2014-07-23 01:25:33 +0200 |
| commit | ecb3c47704ccaa349ee4824b019181d700919582 (patch) | |
| tree | ef3059010117ac78c1548494903a9c60c71b149c | |
| parent | 0b03431c95c3c348aa686c1a3df68a51bd7761a6 (diff) | |
| download | raylib-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...
| -rw-r--r-- | CHANGELOG | 1 | ||||
| -rw-r--r-- | release/win32-mingw/lib/libraylib.a | bin | 279998 -> 280176 bytes | |||
| -rw-r--r-- | src/rlgl.c | 22 | ||||
| -rw-r--r-- | src/shapes.c | 25 |
4 files changed, 37 insertions, 11 deletions
@@ -15,6 +15,7 @@ Release: raylib 1.1.1 (22 July 2014) [rlgl] Removed double buffer system (no performance improvement) [rlgl] rlglDraw() - Reorganized buffers drawing order [rlgl] Corrected bug on screen resizing +[shapes] DrawRectangle() - Use QUADS instead of TRIANGLES [models] DrawSphereWires() - Corrected some issues [models] LoadOBJ() - Redesigned to support multiple meshes [models] LoadCubesMap() - Loading a map as cubes (by pixel color) diff --git a/release/win32-mingw/lib/libraylib.a b/release/win32-mingw/lib/libraylib.a Binary files differindex d900d320..3f56d8a6 100644 --- a/release/win32-mingw/lib/libraylib.a +++ b/release/win32-mingw/lib/libraylib.a @@ -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 |
