summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core.c2
-rw-r--r--src/models.c189
-rw-r--r--src/rlgl.c9
-rw-r--r--src/shapes.c2
-rw-r--r--src/textures.c4
5 files changed, 103 insertions, 103 deletions
diff --git a/src/core.c b/src/core.c
index 4a95c660..78c0a7ef 100644
--- a/src/core.c
+++ b/src/core.c
@@ -912,8 +912,6 @@ void End3dMode(void)
rlMatrixMode(RL_MODELVIEW); // Get back to modelview matrix
rlLoadIdentity(); // Reset current matrix (MODELVIEW)
- //rlTranslatef(0.375, 0.375, 0); // HACK to ensure pixel-perfect drawing on OpenGL (after exiting 3D mode)
-
rlDisableDepthTest(); // Disable DEPTH_TEST for 2D
}
diff --git a/src/models.c b/src/models.c
index accab7e8..315b51d4 100644
--- a/src/models.c
+++ b/src/models.c
@@ -118,68 +118,67 @@ void DrawCube(Vector3 position, float width, float height, float length, Color c
float z = 0.0f;
rlPushMatrix();
-
- // NOTE: Be careful! Function order matters (scale -> rotate -> translate)
- //rlScalef(1.0f, 3.0f, 1.0f);
- //rlRotatef(45, 0, 1, 0);
+ // NOTE: Transformation is applied in inverse order (scale -> rotate -> translate)
rlTranslatef(position.x, position.y, position.z);
+ //rlRotatef(45, 0, 1, 0);
+ //rlScalef(1.0f, 1.0f, 1.0f); // NOTE: Vertices are directly scaled on definition
rlBegin(RL_TRIANGLES);
rlColor4ub(color.r, color.g, color.b, color.a);
- // Front Face -----------------------------------------------------
- rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left
- rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right
- rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left
-
- rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right
- rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left
- rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right
-
- // Back Face ------------------------------------------------------
- rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left
- rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left
- rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right
-
- rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right
- rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right
- rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left
+ // Front face
+ rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Left
+ rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Right
+ rlVertex3f(x - width/2, y + height/2, z + length/2); // Top Left
- // Top Face -------------------------------------------------------
- rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left
- rlVertex3f(x-width/2, y+height/2, z+length/2); // Bottom Left
- rlVertex3f(x+width/2, y+height/2, z+length/2); // Bottom Right
+ rlVertex3f(x + width/2, y + height/2, z + length/2); // Top Right
+ rlVertex3f(x - width/2, y + height/2, z + length/2); // Top Left
+ rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Right
- rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right
- rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left
- rlVertex3f(x+width/2, y+height/2, z+length/2); // Bottom Right
+ // Back face
+ rlVertex3f(x - width/2, y - height/2, z - length/2); // Bottom Left
+ rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Left
+ rlVertex3f(x + width/2, y - height/2, z - length/2); // Bottom Right
- // Bottom Face ----------------------------------------------------
- rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left
- rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right
- rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left
+ rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Right
+ rlVertex3f(x + width/2, y - height/2, z - length/2); // Bottom Right
+ rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Left
- rlVertex3f(x+width/2, y-height/2, z-length/2); // Top Right
- rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right
- rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left
+ // Top face
+ rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Left
+ rlVertex3f(x - width/2, y + height/2, z + length/2); // Bottom Left
+ rlVertex3f(x + width/2, y + height/2, z + length/2); // Bottom Right
- // Right face -----------------------------------------------------
- rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right
- rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right
- rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Left
+ rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Right
+ rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Left
+ rlVertex3f(x + width/2, y + height/2, z + length/2); // Bottom Right
- rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Left
- rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right
- rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Left
+ // Bottom face
+ rlVertex3f(x - width/2, y - height/2, z - length/2); // Top Left
+ rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Right
+ rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Left
- // Left Face ------------------------------------------------------
- rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Right
- rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left
- rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Right
+ rlVertex3f(x + width/2, y - height/2, z - length/2); // Top Right
+ rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Right
+ rlVertex3f(x - width/2, y - height/2, z - length/2); // Top Left
- rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left
- rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left
- rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Right
+ // Right face
+ rlVertex3f(x + width/2, y - height/2, z - length/2); // Bottom Right
+ rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Right
+ rlVertex3f(x + width/2, y + height/2, z + length/2); // Top Left
+
+ rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Left
+ rlVertex3f(x + width/2, y - height/2, z - length/2); // Bottom Right
+ rlVertex3f(x + width/2, y + height/2, z + length/2); // Top Left
+
+ // Left face
+ rlVertex3f(x - width/2, y - height/2, z - length/2); // Bottom Right
+ rlVertex3f(x - width/2, y + height/2, z + length/2); // Top Left
+ rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Right
+
+ rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Left
+ rlVertex3f(x - width/2, y + height/2, z + length/2); // Top Left
+ rlVertex3f(x - width/2, y - height/2, z - length/2); // Bottom Right
rlEnd();
rlPopMatrix();
}
@@ -198,8 +197,6 @@ void DrawCubeWires(Vector3 position, float width, float height, float length, Co
float z = 0.0f;
rlPushMatrix();
-
- //rlRotatef(45, 0, 1, 0);
rlTranslatef(position.x, position.y, position.z);
rlBegin(RL_LINES);
@@ -271,49 +268,49 @@ void DrawCubeTexture(Texture2D texture, Vector3 position, float width, float hei
rlEnableTexture(texture.id);
//rlPushMatrix();
- // NOTE: Be careful! Function order matters (scale -> rotate -> translate)
- //rlScalef(2.0f, 2.0f, 2.0f);
- //rlRotatef(45, 0, 1, 0);
+ // NOTE: Transformation is applied in inverse order (scale -> rotate -> translate)
//rlTranslatef(2.0f, 0.0f, 0.0f);
+ //rlRotatef(45, 0, 1, 0);
+ //rlScalef(2.0f, 2.0f, 2.0f);
rlBegin(RL_QUADS);
rlColor4ub(color.r, color.g, color.b, color.a);
// Front Face
rlNormal3f(0.0f, 0.0f, 1.0f); // Normal Pointing Towards Viewer
- rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left Of The Texture and Quad
- rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right Of The Texture and Quad
- rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right Of The Texture and Quad
- rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left Of The Texture and Quad
+ rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Left Of The Texture and Quad
+ rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Right Of The Texture and Quad
+ rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z + length/2); // Top Right Of The Texture and Quad
+ rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z + length/2); // Top Left Of The Texture and Quad
// Back Face
- rlNormal3f(0.0f, 0.0f,-1.0f); // Normal Pointing Away From Viewer
- rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Right Of The Texture and Quad
- rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Right Of The Texture and Quad
- rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Left Of The Texture and Quad
- rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Left Of The Texture and Quad
+ rlNormal3f(0.0f, 0.0f, - 1.0f); // Normal Pointing Away From Viewer
+ rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z - length/2); // Bottom Right Of The Texture and Quad
+ rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Right Of The Texture and Quad
+ rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Left Of The Texture and Quad
+ rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z - length/2); // Bottom Left Of The Texture and Quad
// Top Face
rlNormal3f(0.0f, 1.0f, 0.0f); // Normal Pointing Up
- rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left Of The Texture and Quad
- rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x-width/2, y+height/2, z+length/2); // Bottom Left Of The Texture and Quad
- rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x+width/2, y+height/2, z+length/2); // Bottom Right Of The Texture and Quad
- rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right Of The Texture and Quad
+ rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Left Of The Texture and Quad
+ rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x - width/2, y + height/2, z + length/2); // Bottom Left Of The Texture and Quad
+ rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x + width/2, y + height/2, z + length/2); // Bottom Right Of The Texture and Quad
+ rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Right Of The Texture and Quad
// Bottom Face
- rlNormal3f(0.0f,-1.0f, 0.0f); // Normal Pointing Down
- rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Right Of The Texture and Quad
- rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x+width/2, y-height/2, z-length/2); // Top Left Of The Texture and Quad
- rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Left Of The Texture and Quad
- rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Right Of The Texture and Quad
+ rlNormal3f(0.0f, - 1.0f, 0.0f); // Normal Pointing Down
+ rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x - width/2, y - height/2, z - length/2); // Top Right Of The Texture and Quad
+ rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x + width/2, y - height/2, z - length/2); // Top Left Of The Texture and Quad
+ rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Left Of The Texture and Quad
+ rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Right Of The Texture and Quad
// Right face
rlNormal3f(1.0f, 0.0f, 0.0f); // Normal Pointing Right
- rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right Of The Texture and Quad
- rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right Of The Texture and Quad
- rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Left Of The Texture and Quad
- rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Left Of The Texture and Quad
+ rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z - length/2); // Bottom Right Of The Texture and Quad
+ rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z - length/2); // Top Right Of The Texture and Quad
+ rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x + width/2, y + height/2, z + length/2); // Top Left Of The Texture and Quad
+ rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Left Of The Texture and Quad
// Left Face
- rlNormal3f(-1.0f, 0.0f, 0.0f); // Normal Pointing Left
- rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left Of The Texture and Quad
- rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Right Of The Texture and Quad
- rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Right Of The Texture and Quad
- rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left Of The Texture and Quad
+ rlNormal3f( - 1.0f, 0.0f, 0.0f); // Normal Pointing Left
+ rlTexCoord2f(0.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z - length/2); // Bottom Left Of The Texture and Quad
+ rlTexCoord2f(1.0f, 0.0f); rlVertex3f(x - width/2, y - height/2, z + length/2); // Bottom Right Of The Texture and Quad
+ rlTexCoord2f(1.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z + length/2); // Top Right Of The Texture and Quad
+ rlTexCoord2f(0.0f, 1.0f); rlVertex3f(x - width/2, y + height/2, z - length/2); // Top Left Of The Texture and Quad
rlEnd();
//rlPopMatrix();
@@ -330,8 +327,9 @@ void DrawSphere(Vector3 centerPos, float radius, Color color)
void DrawSphereEx(Vector3 centerPos, float radius, int rings, int slices, Color color)
{
rlPushMatrix();
- rlScalef(radius, radius, radius);
+ // NOTE: Transformation is applied in inverse order (scale -> translate)
rlTranslatef(centerPos.x, centerPos.y, centerPos.z);
+ rlScalef(radius, radius, radius);
rlBegin(RL_TRIANGLES);
rlColor4ub(color.r, color.g, color.b, color.a);
@@ -369,8 +367,9 @@ void DrawSphereEx(Vector3 centerPos, float radius, int rings, int slices, Color
void DrawSphereWires(Vector3 centerPos, float radius, int rings, int slices, Color color)
{
rlPushMatrix();
- rlScalef(radius, radius, radius);
+ // NOTE: Transformation is applied in inverse order (scale -> translate)
rlTranslatef(centerPos.x, centerPos.y, centerPos.z);
+ rlScalef(radius, radius, radius);
rlBegin(RL_LINES);
rlColor4ub(color.r, color.g, color.b, color.a);
@@ -423,12 +422,12 @@ void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float h
for (int i = 0; i < 360; i += 360/sides)
{
rlVertex3f(sinf(DEG2RAD*i)*radiusBottom, 0, cosf(DEG2RAD*i)*radiusBottom); //Bottom Left
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i+360/sides))*radiusBottom); //Bottom Right
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusTop, height, cosf(DEG2RAD*(i+360/sides))*radiusTop); //Top Right
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i + 360/sides))*radiusBottom); //Bottom Right
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusTop, height, cosf(DEG2RAD*(i + 360/sides))*radiusTop); //Top Right
rlVertex3f(sinf(DEG2RAD*i)*radiusTop, height, cosf(DEG2RAD*i)*radiusTop); //Top Left
rlVertex3f(sinf(DEG2RAD*i)*radiusBottom, 0, cosf(DEG2RAD*i)*radiusBottom); //Bottom Left
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusTop, height, cosf(DEG2RAD*(i+360/sides))*radiusTop); //Top Right
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusTop, height, cosf(DEG2RAD*(i + 360/sides))*radiusTop); //Top Right
}
// Draw Cap --------------------------------------------------------------------------------------
@@ -436,7 +435,7 @@ void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float h
{
rlVertex3f(0, height, 0);
rlVertex3f(sinf(DEG2RAD*i)*radiusTop, height, cosf(DEG2RAD*i)*radiusTop);
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusTop, height, cosf(DEG2RAD*(i+360/sides))*radiusTop);
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusTop, height, cosf(DEG2RAD*(i + 360/sides))*radiusTop);
}
}
else
@@ -446,7 +445,7 @@ void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float h
{
rlVertex3f(0, height, 0);
rlVertex3f(sinf(DEG2RAD*i)*radiusBottom, 0, cosf(DEG2RAD*i)*radiusBottom);
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i+360/sides))*radiusBottom);
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i + 360/sides))*radiusBottom);
}
}
@@ -454,7 +453,7 @@ void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float h
for (int i = 0; i < 360; i += 360/sides)
{
rlVertex3f(0, 0, 0);
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i+360/sides))*radiusBottom);
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i + 360/sides))*radiusBottom);
rlVertex3f(sinf(DEG2RAD*i)*radiusBottom, 0, cosf(DEG2RAD*i)*radiusBottom);
}
rlEnd();
@@ -476,12 +475,12 @@ void DrawCylinderWires(Vector3 position, float radiusTop, float radiusBottom, fl
for (int i = 0; i < 360; i += 360/sides)
{
rlVertex3f(sinf(DEG2RAD*i)*radiusBottom, 0, cosf(DEG2RAD*i)*radiusBottom);
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i+360/sides))*radiusBottom);
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i + 360/sides))*radiusBottom);
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i+360/sides))*radiusBottom);
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusTop, height, cosf(DEG2RAD*(i+360/sides))*radiusTop);
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusBottom, 0, cosf(DEG2RAD*(i + 360/sides))*radiusBottom);
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusTop, height, cosf(DEG2RAD*(i + 360/sides))*radiusTop);
- rlVertex3f(sinf(DEG2RAD*(i+360/sides))*radiusTop, height, cosf(DEG2RAD*(i+360/sides))*radiusTop);
+ rlVertex3f(sinf(DEG2RAD*(i + 360/sides))*radiusTop, height, cosf(DEG2RAD*(i + 360/sides))*radiusTop);
rlVertex3f(sinf(DEG2RAD*i)*radiusTop, height, cosf(DEG2RAD*i)*radiusTop);
rlVertex3f(sinf(DEG2RAD*i)*radiusTop, height, cosf(DEG2RAD*i)*radiusTop);
@@ -496,8 +495,8 @@ void DrawPlane(Vector3 centerPos, Vector2 size, Color color)
{
// NOTE: Plane is always created on XZ ground
rlPushMatrix();
- rlScalef(size.x, 1.0f, size.y);
rlTranslatef(centerPos.x, centerPos.y, centerPos.z);
+ rlScalef(size.x, 1.0f, size.y);
rlBegin(RL_TRIANGLES);
rlColor4ub(color.r, color.g, color.b, color.a);
@@ -567,8 +566,8 @@ void DrawGizmo(Vector3 position)
float length = 1.0f;
rlPushMatrix();
- rlScalef(length, length, length);
rlTranslatef(position.x, position.y, position.z);
+ rlScalef(length, length, length);
rlBegin(RL_LINES);
rlColor3f(1.0f, 0.0f, 0.0f); rlVertex3f(0.0f, 0.0f, 0.0f);
diff --git a/src/rlgl.c b/src/rlgl.c
index dc8a37ac..cf57bcf1 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -446,7 +446,8 @@ void rlTranslatef(float x, float y, float z)
{
Matrix matTranslation = MatrixTranslate(x, y, z);
- *currentMatrix = MatrixMultiply(*currentMatrix, matTranslation);
+ // NOTE: We transpose matrix with multiplication order
+ *currentMatrix = MatrixMultiply(matTranslation, *currentMatrix);
}
// Multiply the current matrix by a rotation matrix
@@ -458,7 +459,8 @@ void rlRotatef(float angleDeg, float x, float y, float z)
Vector3Normalize(&axis);
matRotation = MatrixRotate(axis, angleDeg*DEG2RAD);
- *currentMatrix = MatrixMultiply(*currentMatrix, matRotation);
+ // NOTE: We transpose matrix with multiplication order
+ *currentMatrix = MatrixMultiply(matRotation, *currentMatrix);
}
// Multiply the current matrix by a scaling matrix
@@ -466,7 +468,8 @@ void rlScalef(float x, float y, float z)
{
Matrix matScale = MatrixScale(x, y, z);
- *currentMatrix = MatrixMultiply(*currentMatrix, matScale);
+ // NOTE: We transpose matrix with multiplication order
+ *currentMatrix = MatrixMultiply(matScale, *currentMatrix);
}
// Multiply the current matrix by another matrix
diff --git a/src/shapes.c b/src/shapes.c
index 25ed93aa..0e544718 100644
--- a/src/shapes.c
+++ b/src/shapes.c
@@ -123,7 +123,7 @@ void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color)
rlPushMatrix();
rlTranslatef((float)startPos.x, (float)startPos.y, 0);
- rlRotatef(-RAD2DEG*angle, 0, 0, 1);
+ rlRotatef(RAD2DEG*angle, 0, 0, 1);
rlTranslatef(0, -thick/2.0f, 0);
rlBegin(RL_QUADS);
diff --git a/src/textures.c b/src/textures.c
index 23935bf1..1436111f 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -1800,9 +1800,9 @@ void DrawTexturePro(Texture2D texture, Rectangle sourceRec, Rectangle destRec, V
rlEnableTexture(texture.id);
rlPushMatrix();
- rlTranslatef(-origin.x, -origin.y, 0);
- rlRotatef(rotation, 0, 0, 1);
rlTranslatef((float)destRec.x, (float)destRec.y, 0);
+ rlRotatef(rotation, 0, 0, 1);
+ rlTranslatef(-origin.x, -origin.y, 0);
rlBegin(RL_QUADS);
rlColor4ub(tint.r, tint.g, tint.b, tint.a);