diff --git a/CHANGELOG b/CHANGELOG index 9c7242bc0..4e2797825 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 index d900d3201..3f56d8a68 100644 Binary files a/release/win32-mingw/lib/libraylib.a and b/release/win32-mingw/lib/libraylib.a differ diff --git a/src/rlgl.c b/src/rlgl.c index c181c7d6c..75978e11d 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 2c5895124..ad02de170 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