Make calling program use direct access to obj internals rather than getters
authorNick Downing <nick@ndcode.org>
Wed, 20 Apr 2022 06:13:17 +0000 (16:13 +1000)
committerNick Downing <nick@ndcode.org>
Wed, 20 Apr 2022 06:14:11 +0000 (16:14 +1000)
render.c

index 352509a..d60a505 100644 (file)
--- a/render.c
+++ b/render.c
@@ -294,15 +294,18 @@ int main(void) {
 
   // model
 #if 1
-  struct obj *o = obj_create("Chest.obj"); //"grey_bliss_set.obj");
+  struct obj *obj = obj_create("Chest.obj"); //"grey_bliss_set.obj");
   struct array *model_vertices;
   {
-    int I = obj_num_vert(o);
+    int I = obj->vc;
     model_vertices = array_new3(4, I, sizeof(float));
     for (int i = 0; i < I; ++i) {
-      float v[4];
-      obj_get_vert_v(o, i, v);
-      v[3] = 1.f;
+      float v[4] = {
+        obj->vv[i].v[0],
+        obj->vv[i].v[1],
+        obj->vv[i].v[2],
+        1.f
+      };
       *(float *)array_index2(model_vertices, 0, i) = v[0];
       *(float *)array_index2(model_vertices, 1, i) = v[1];
       *(float *)array_index2(model_vertices, 2, i) = v[2];
@@ -521,12 +524,15 @@ int main(void) {
     SDL_SetRenderDrawColor(renderer, 0, 0xff, 0, 0xff);
 #if 1
     {
-      int I = obj_num_surf(o);
+      int I = obj->sc;
       for (int i = 0; i < I; ++i) {
-        int J = obj_num_poly(o, i);
+        int J = obj->sv[i].pc;
         for (int j = 0; j < J; ++j) {
-          int v[3];
-          obj_get_poly(o, i, j, v);
+          int v[3] = {
+            (int)obj->sv[i].pv[j].vi[0],
+            (int)obj->sv[i].pv[j].vi[1],
+            (int)obj->sv[i].pv[j].vi[2]
+          };
 
 #if 1
           // check face visibility
@@ -583,10 +589,12 @@ int main(void) {
           );
           array_free(qug);
         }
-        /*int*/ J = obj_num_line(o, i);
+        /*int*/ J = obj->sv[i].lc;
         for (int j = 0; j < J; ++j) {
-          int v[2];
-          obj_get_line(o, i, j, v);
+          int v[2] = {
+            (int)obj->sv[i].lv[j].vi[0],
+            (int)obj->sv[i].lv[j].vi[1]
+          };
           struct array *qug = gather(qu, 2, v);
           SDL_RenderDrawLine(
             renderer,