|
@@ -15,6 +15,7 @@
|
|
|
|
|
|
#include <log.h>
|
|
|
|
|
|
+#include <array.h>
|
|
|
#include <display.h>
|
|
|
#include <vector.h>
|
|
|
#include <mesh.h>
|
|
@@ -35,7 +36,7 @@ vec3_t cubeRotation =
|
|
|
.z = 0,
|
|
|
};
|
|
|
|
|
|
-triangle_t projectedTriangles[N_MESH_FACES];
|
|
|
+triangle_t *projectedTriangles = NULL;
|
|
|
|
|
|
double fovFactor = 640;
|
|
|
|
|
@@ -118,8 +119,11 @@ void update()
|
|
|
cubeRotation.y += 0.01;
|
|
|
cubeRotation.z += 0.01;
|
|
|
|
|
|
+ arrayEmpty(projectedTriangles);
|
|
|
+
|
|
|
for(i = 0; i < N_MESH_FACES; i++)
|
|
|
{
|
|
|
+ triangle_t currentTriangle;
|
|
|
vec3_t vertices[3] =
|
|
|
{
|
|
|
meshVertices[meshFaces[i].a - 1],
|
|
@@ -142,8 +146,12 @@ void update()
|
|
|
projected.x += (windowWidth / 2);
|
|
|
projected.y += (windowHeight / 2);
|
|
|
|
|
|
- projectedTriangles[i].points[j] = projected;
|
|
|
+
|
|
|
+
|
|
|
+ currentTriangle.points[j] = projected;
|
|
|
}
|
|
|
+
|
|
|
+ arrayAdd(projectedTriangles, currentTriangle);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -152,9 +160,9 @@ void render()
|
|
|
int i;
|
|
|
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
|
|
|
SDL_RenderClear(renderer);
|
|
|
+ int triangleCount = arrayGetSize(projectedTriangles);
|
|
|
|
|
|
-
|
|
|
- for(i = 0; i < N_MESH_FACES; i++)
|
|
|
+ for(i = 0; i < triangleCount; i++)
|
|
|
{
|
|
|
drawTriangle(projectedTriangles[i].points[0].x, projectedTriangles[i].points[0].y,
|
|
|
projectedTriangles[i].points[1].x, projectedTriangles[i].points[1].y,
|
|
@@ -204,6 +212,8 @@ no_more_params:
|
|
|
render();
|
|
|
}
|
|
|
|
|
|
+ arrayFree(projectedTriangles);
|
|
|
+
|
|
|
destroy_window();
|
|
|
|
|
|
return 0;
|