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)
|
||||
|
|
|
@ -1259,6 +1259,8 @@ RLAPI const char *CodepointToUtf8(int codepoint, int *byteLength); // Encode
|
|||
RLAPI void DrawLine3D(Vector3 startPos, Vector3 endPos, Color color); // Draw a line in 3D world space
|
||||
RLAPI void DrawPoint3D(Vector3 position, Color color); // Draw a point in 3D space, actually a small line
|
||||
RLAPI void DrawCircle3D(Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color); // Draw a circle in 3D world space
|
||||
RLAPI void DrawTriangle3D(Vector3 v1, Vector3 v2, Vector3 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!)
|
||||
RLAPI void DrawTriangleStrip3D(Vector3 *points, int pointsCount, Color color); // Draw a triangle strip defined by points
|
||||
RLAPI void DrawCube(Vector3 position, float width, float height, float length, Color color); // Draw cube
|
||||
RLAPI void DrawCubeV(Vector3 position, Vector3 size, Color color); // Draw cube (Vector version)
|
||||
RLAPI void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); // Draw cube wires
|
||||
|
@ -1273,7 +1275,6 @@ RLAPI void DrawPlane(Vector3 centerPos, Vector2 size, Color color);
|
|||
RLAPI void DrawRay(Ray ray, Color color); // Draw a ray line
|
||||
RLAPI void DrawGrid(int slices, float spacing); // Draw a grid (centered at (0, 0, 0))
|
||||
RLAPI void DrawGizmo(Vector3 position); // Draw simple gizmo
|
||||
//DrawTorus(), DrawTeapot() could be useful?
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
// Model 3d Loading and Drawing Functions (Module: models)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue