Browse Source

Lesson 9.3

Godzil 3 years ago
parent
commit
3726bff577
3 changed files with 23 additions and 17 deletions
  1. 18 0
      source/display.c
  2. 1 0
      source/include/display.h
  3. 4 17
      source/main.c

+ 18 - 0
source/display.c

@@ -159,6 +159,17 @@ void drawLine(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t colou
     double incrementX = deltaX / (double)sideLength;
     double incrementY = deltaY / (double)sideLength;
 
+#if 0
+    if (deltaX == 0)
+    {
+        drawHLine()
+    }
+    if (deltaY == 0)
+    {
+        drawVLine()
+    }
+#endif
+
     double currentX = x0;
     double currentY = y0;
 
@@ -168,4 +179,11 @@ void drawLine(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t colou
         currentX += incrementX;
         currentY += incrementY;
     }
+}
+
+void drawTriangle(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t x2, uint32_t y2, uint32_t colour)
+{
+    drawLine(x0, y0, x1, y1, colour);
+    drawLine(x1, y1, x2, y2, colour);
+    drawLine(x2, y2, x0, y0, colour);
 }

+ 1 - 0
source/include/display.h

@@ -47,5 +47,6 @@ void drawRectangle(uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint32_t colo
 //void drawHLine(uint32_t x, uint32_t y0, uint32_t y1, uint32_t colour);
 //void drawVLine(uint32_t x0, uint32_t y, uint32_t x1, uint32_t colour);
 void drawLine(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t colour);
+void drawTriangle(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t x2, uint32_t y2, uint32_t colour);
 
 #endif /* THREEDENGINE_SOURCE_INCLUDE_DISPLAY_H */

+ 4 - 17
source/main.c

@@ -156,23 +156,10 @@ void render()
 
     for(i = 0; i < N_MESH_FACES; i++)
     {
-        drawRectangle(projectedTriangles[i].points[0].x,
-                      projectedTriangles[i].points[0].y,4, 4, 0xFFFFFF00);
-        drawRectangle(projectedTriangles[i].points[1].x,
-                      projectedTriangles[i].points[1].y,4, 4, 0xFFFF00FF);
-        drawRectangle(projectedTriangles[i].points[2].x,
-                      projectedTriangles[i].points[2].y,4, 4, 0xFF00FFFF);
-
-        drawLine(projectedTriangles[i].points[0].x, projectedTriangles[i].points[0].y,
-                 projectedTriangles[i].points[1].x, projectedTriangles[i].points[1].y,
-                 0xFFFFFF00);
-        drawLine(projectedTriangles[i].points[1].x, projectedTriangles[i].points[1].y,
-                 projectedTriangles[i].points[2].x, projectedTriangles[i].points[2].y,
-                 0xFFFF00FF);
-        drawLine(projectedTriangles[i].points[2].x, projectedTriangles[i].points[2].y,
-                 projectedTriangles[i].points[0].x, projectedTriangles[i].points[0].y,
-                 0xFF00FFFF);
-
+        drawTriangle(projectedTriangles[i].points[0].x, projectedTriangles[i].points[0].y,
+                     projectedTriangles[i].points[1].x, projectedTriangles[i].points[1].y,
+                     projectedTriangles[i].points[2].x, projectedTriangles[i].points[2].y,
+                     0xFF00FFFF);
     }