Review transforms to match OpenGL 1.1
This commit is contained in:
parent
1f310f7d4b
commit
eeca607506
5 changed files with 100 additions and 100 deletions
|
@ -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
|
||||
}
|
||||
|
||||
|
|
37
src/models.c
37
src/models.c
|
@ -118,16 +118,15 @@ 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 -----------------------------------------------------
|
||||
// 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
|
||||
|
@ -136,7 +135,7 @@ void DrawCube(Vector3 position, float width, float height, float length, Color c
|
|||
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 ------------------------------------------------------
|
||||
// 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
|
||||
|
@ -145,7 +144,7 @@ void DrawCube(Vector3 position, float width, float height, float length, Color c
|
|||
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 -------------------------------------------------------
|
||||
// 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
|
||||
|
@ -154,7 +153,7 @@ void DrawCube(Vector3 position, float width, float height, float length, Color c
|
|||
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 ----------------------------------------------------
|
||||
// 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
|
||||
|
@ -163,7 +162,7 @@ void DrawCube(Vector3 position, float width, float height, float length, Color c
|
|||
rlVertex3f(x + width/2, y - height/2, z + length/2); // Bottom Right
|
||||
rlVertex3f(x - width/2, y - height/2, z - length/2); // Top Left
|
||||
|
||||
// Right face -----------------------------------------------------
|
||||
// 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
|
||||
|
@ -172,7 +171,7 @@ void DrawCube(Vector3 position, float width, float height, float length, Color c
|
|||
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 ------------------------------------------------------
|
||||
// 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
|
||||
|
@ -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,10 +268,10 @@ 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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue