ADDED: DrawTriangle3D() and DrawTriangleStrip3D()
Those functions could be very useful for custom triangle data drawing, using internal batch system.
This commit is contained in:
parent
2e8299742b
commit
f6ca045735
2 changed files with 44 additions and 1 deletions
42
src/models.c
42
src/models.c
|
@ -169,6 +169,48 @@ void DrawCircle3D(Vector3 center, float radius, Vector3 rotationAxis, float rota
|
|||
rlPopMatrix();
|
||||
}
|
||||
|
||||
// Draw a color-filled triangle (vertex in counter-clockwise order!)
|
||||
void DrawTriangle3D(Vector3 v1, Vector3 v2, Vector3 v3, Color color)
|
||||
{
|
||||
if (rlCheckBufferLimit(3)) rlglDraw();
|
||||
|
||||
rlBegin(RL_TRIANGLES);
|
||||
rlColor4ub(color.r, color.g, color.b, color.a);
|
||||
rlVertex3f(v1.x, v1.y, v1.z);
|
||||
rlVertex3f(v2.x, v2.y, v2.z);
|
||||
rlVertex3f(v3.x, v3.y, v3.z);
|
||||
rlEnd();
|
||||
}
|
||||
|
||||
// Draw a triangle strip defined by points
|
||||
void DrawTriangleStrip3D(Vector3 *points, int pointsCount, Color color)
|
||||
{
|
||||
if (pointsCount >= 3)
|
||||
{
|
||||
if (rlCheckBufferLimit(3*(pointsCount - 2))) rlglDraw();
|
||||
|
||||
rlBegin(RL_TRIANGLES);
|
||||
rlColor4ub(color.r, color.g, color.b, color.a);
|
||||
|
||||
for (int i = 2; i < pointsCount; i++)
|
||||
{
|
||||
if ((i%2) == 0)
|
||||
{
|
||||
rlVertex3f(points[i].x, points[i].y, points[i].z);
|
||||
rlVertex3f(points[i - 2].x, points[i - 2].y, points[i - 2].z);
|
||||
rlVertex3f(points[i - 1].x, points[i - 1].y, points[i - 1].z);
|
||||
}
|
||||
else
|
||||
{
|
||||
rlVertex3f(points[i].x, points[i].y, points[i].z);
|
||||
rlVertex3f(points[i - 1].x, points[i - 1].y, points[i - 1].z);
|
||||
rlVertex3f(points[i - 2].x, points[i - 2].y, points[i - 2].z);
|
||||
}
|
||||
}
|
||||
rlEnd();
|
||||
}
|
||||
}
|
||||
|
||||
// Draw cube
|
||||
// NOTE: Cube position is the center position
|
||||
void DrawCube(Vector3 position, float width, float height, float length, Color color)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue