Testing a SOL-based goal renderer as an efficient alternative to the display lists...
authorrlk <rlk@78b8d119-cf0a-0410-b17c-f493084dd1d7>
Sun, 27 Mar 2011 21:54:43 +0000 (21:54 +0000)
committerrlk <rlk@78b8d119-cf0a-0410-b17c-f493084dd1d7>
Sun, 27 Mar 2011 21:54:43 +0000 (21:54 +0000)
git-svn-id: https://s.snth.net/svn/neverball/branches/gles@3535 78b8d119-cf0a-0410-b17c-f493084dd1d7

ball/game_draw.c
data/geom/goal/goal [new file with mode: 0644]
data/geom/goal/goal.map [new file with mode: 0644]
data/geom/goal/goal.mtl [new file with mode: 0644]
data/geom/goal/goal.obj [new file with mode: 0644]
data/geom/goal/goal.png [new file with mode: 0644]
data/geom/goal/goal.sol [new file with mode: 0644]
data/geom/goal/goal.wings [new file with mode: 0644]
share/geom.c
share/solid_draw.c

index 10109a6..88a48b6 100644 (file)
@@ -134,22 +134,18 @@ static void game_draw_goals(const struct game_draw *gd,
 
         /* Draw the goal particles. */
 
-        glEnable(GL_TEXTURE_2D);
+        for (zi = 0; zi < base->zc; zi++)
         {
-            for (zi = 0; zi < base->zc; zi++)
+            glPushMatrix();
             {
-                glPushMatrix();
-                {
-                    glTranslatef(base->zv[zi].p[0],
-                                 base->zv[zi].p[1],
-                                 base->zv[zi].p[2]);
+                glTranslatef(base->zv[zi].p[0],
+                             base->zv[zi].p[1],
+                             base->zv[zi].p[2]);
 
-                    part_draw_goal(M, base->zv[zi].r, gd->goal_k, t);
-                }
-                glPopMatrix();
+                part_draw_goal(M, base->zv[zi].r, gd->goal_k, t);
             }
+            glPopMatrix();
         }
-        glDisable(GL_TEXTURE_2D);
 
         /* Draw the goal column. */
 
@@ -446,9 +442,10 @@ static void game_draw_fore(const struct game_draw *gd,
             sol_bill(draw, M, t);
             part_draw_coin(M, t);
 
+            game_draw_goals(gd, M, t);
+
             glDisable(GL_TEXTURE_2D);
             {
-                game_draw_goals(gd, M, t);
                 game_draw_jumps(gd, M, t);
                 game_draw_swchs(draw->vary);
             }
diff --git a/data/geom/goal/goal b/data/geom/goal/goal
new file mode 100644 (file)
index 0000000..57113ae
--- /dev/null
@@ -0,0 +1,7 @@
+1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000
+0.000000 0.000000 0.000000 0.000000
+0.000000 0.000000 0.000000 0.000000
+10.000000
+1
+45.000000
diff --git a/data/geom/goal/goal.map b/data/geom/goal/goal.map
new file mode 100644 (file)
index 0000000..c94e8a2
--- /dev/null
@@ -0,0 +1,4 @@
+{
+"classname" "worldspawn"
+"model" "geom/goal/goal.obj"
+}
diff --git a/data/geom/goal/goal.mtl b/data/geom/goal/goal.mtl
new file mode 100644 (file)
index 0000000..052b0b3
--- /dev/null
@@ -0,0 +1,20 @@
+# Exported from Wings 3D 1.4.1\r
+newmtl default\r
+Ns 100.0\r
+d 1.0\r
+illum 2\r
+Kd 1.0 1.0 1.0\r
+Ka 1.0 1.0 1.0\r
+Ks 1.0 1.0 1.0\r
+Ke 0.0 0.0 0.0\r
+\r
+newmtl geom/goal/goal\r
+Ns 100.0\r
+d 1.0\r
+illum 2\r
+Kd 1.0 1.0 1.0\r
+Ka 1.0 1.0 1.0\r
+Ks 1.0 1.0 1.0\r
+Ke 0.0 0.0 0.0\r
+map_Kd goal.png\r
+\r
diff --git a/data/geom/goal/goal.obj b/data/geom/goal/goal.obj
new file mode 100644 (file)
index 0000000..0973cd2
--- /dev/null
@@ -0,0 +1,521 @@
+# Exported from Wings 3D 1.4.1\r
+mtllib goal.mtl\r
+o cylinder1\r
+#128 vertices, 128 faces\r
+v 1.00000000 3.00000000 4.7704896e-17\r
+v 0.99518473 3.00000000 9.8017140e-2\r
+v 0.98078528 3.00000000 0.19509032\r
+v 0.95694034 3.00000000 0.29028468\r
+v 0.92387953 3.00000000 0.38268343\r
+v 0.88192126 3.00000000 0.47139674\r
+v 0.83146961 3.00000000 0.55557023\r
+v 0.77301045 3.00000000 0.63439328\r
+v 0.70710678 3.00000000 0.70710678\r
+v 0.63439328 3.00000000 0.77301045\r
+v 0.55557023 3.00000000 0.83146961\r
+v 0.47139674 3.00000000 0.88192126\r
+v 0.38268343 3.00000000 0.92387953\r
+v 0.29028468 3.00000000 0.95694034\r
+v 0.19509032 3.00000000 0.98078528\r
+v 9.8017140e-2 3.00000000 0.99518473\r
+v 7.8579575e-17 3.00000000 1.00000000\r
+v -9.8017140e-2 3.00000000 0.99518473\r
+v -0.19509032 3.00000000 0.98078528\r
+v -0.29028468 3.00000000 0.95694034\r
+v -0.38268343 3.00000000 0.92387953\r
+v -0.47139674 3.00000000 0.88192126\r
+v -0.55557023 3.00000000 0.83146961\r
+v -0.63439328 3.00000000 0.77301045\r
+v -0.70710678 3.00000000 0.70710678\r
+v -0.77301045 3.00000000 0.63439328\r
+v -0.83146961 3.00000000 0.55557023\r
+v -0.88192126 3.00000000 0.47139674\r
+v -0.92387953 3.00000000 0.38268343\r
+v -0.95694034 3.00000000 0.29028468\r
+v -0.98078528 3.00000000 0.19509032\r
+v -0.99518473 3.00000000 9.8017140e-2\r
+v -1.00000000 3.00000000 1.7016958e-16\r
+v -0.99518473 3.00000000 -9.8017140e-2\r
+v -0.98078528 3.00000000 -0.19509032\r
+v -0.95694034 3.00000000 -0.29028468\r
+v -0.92387953 3.00000000 -0.38268343\r
+v -0.88192126 3.00000000 -0.47139674\r
+v -0.83146961 3.00000000 -0.55557023\r
+v -0.77301045 3.00000000 -0.63439328\r
+v -0.70710678 3.00000000 -0.70710678\r
+v -0.63439328 3.00000000 -0.77301045\r
+v -0.55557023 3.00000000 -0.83146961\r
+v -0.47139674 3.00000000 -0.88192126\r
+v -0.38268343 3.00000000 -0.92387953\r
+v -0.29028468 3.00000000 -0.95694034\r
+v -0.19509032 3.00000000 -0.98078528\r
+v -9.8017140e-2 3.00000000 -0.99518473\r
+v -1.6634979e-16 3.00000000 -1.00000000\r
+v 9.8017140e-2 3.00000000 -0.99518473\r
+v 0.19509032 3.00000000 -0.98078528\r
+v 0.29028468 3.00000000 -0.95694034\r
+v 0.38268343 3.00000000 -0.92387953\r
+v 0.47139674 3.00000000 -0.88192126\r
+v 0.55557023 3.00000000 -0.83146961\r
+v 0.63439328 3.00000000 -0.77301045\r
+v 0.70710678 3.00000000 -0.70710678\r
+v 0.77301045 3.00000000 -0.63439328\r
+v 0.83146961 3.00000000 -0.55557023\r
+v 0.88192126 3.00000000 -0.47139674\r
+v 0.92387953 3.00000000 -0.38268343\r
+v 0.95694034 3.00000000 -0.29028468\r
+v 0.98078528 3.00000000 -0.19509032\r
+v 0.99518473 3.00000000 -9.8017140e-2\r
+v 1.00000000 0.0000000e+0 4.7704896e-17\r
+v 0.99518473 0.0000000e+0 9.8017140e-2\r
+v 0.98078528 0.0000000e+0 0.19509032\r
+v 0.95694034 0.0000000e+0 0.29028468\r
+v 0.92387953 0.0000000e+0 0.38268343\r
+v 0.88192126 0.0000000e+0 0.47139674\r
+v 0.83146961 0.0000000e+0 0.55557023\r
+v 0.77301045 0.0000000e+0 0.63439328\r
+v 0.70710678 0.0000000e+0 0.70710678\r
+v 0.63439328 0.0000000e+0 0.77301045\r
+v 0.55557023 0.0000000e+0 0.83146961\r
+v 0.47139674 0.0000000e+0 0.88192126\r
+v 0.38268343 0.0000000e+0 0.92387953\r
+v 0.29028468 0.0000000e+0 0.95694034\r
+v 0.19509032 0.0000000e+0 0.98078528\r
+v 9.8017140e-2 0.0000000e+0 0.99518473\r
+v 7.8579575e-17 0.0000000e+0 1.00000000\r
+v -9.8017140e-2 0.0000000e+0 0.99518473\r
+v -0.19509032 0.0000000e+0 0.98078528\r
+v -0.29028468 0.0000000e+0 0.95694034\r
+v -0.38268343 0.0000000e+0 0.92387953\r
+v -0.47139674 0.0000000e+0 0.88192126\r
+v -0.55557023 0.0000000e+0 0.83146961\r
+v -0.63439328 0.0000000e+0 0.77301045\r
+v -0.70710678 0.0000000e+0 0.70710678\r
+v -0.77301045 0.0000000e+0 0.63439328\r
+v -0.83146961 0.0000000e+0 0.55557023\r
+v -0.88192126 0.0000000e+0 0.47139674\r
+v -0.92387953 0.0000000e+0 0.38268343\r
+v -0.95694034 0.0000000e+0 0.29028468\r
+v -0.98078528 0.0000000e+0 0.19509032\r
+v -0.99518473 0.0000000e+0 9.8017140e-2\r
+v -1.00000000 0.0000000e+0 1.7016958e-16\r
+v -0.99518473 0.0000000e+0 -9.8017140e-2\r
+v -0.98078528 0.0000000e+0 -0.19509032\r
+v -0.95694034 0.0000000e+0 -0.29028468\r
+v -0.92387953 0.0000000e+0 -0.38268343\r
+v -0.88192126 0.0000000e+0 -0.47139674\r
+v -0.83146961 0.0000000e+0 -0.55557023\r
+v -0.77301045 0.0000000e+0 -0.63439328\r
+v -0.70710678 0.0000000e+0 -0.70710678\r
+v -0.63439328 0.0000000e+0 -0.77301045\r
+v -0.55557023 0.0000000e+0 -0.83146961\r
+v -0.47139674 0.0000000e+0 -0.88192126\r
+v -0.38268343 0.0000000e+0 -0.92387953\r
+v -0.29028468 0.0000000e+0 -0.95694034\r
+v -0.19509032 0.0000000e+0 -0.98078528\r
+v -9.8017140e-2 0.0000000e+0 -0.99518473\r
+v -1.6634979e-16 0.0000000e+0 -1.00000000\r
+v 9.8017140e-2 0.0000000e+0 -0.99518473\r
+v 0.19509032 0.0000000e+0 -0.98078528\r
+v 0.29028468 0.0000000e+0 -0.95694034\r
+v 0.38268343 0.0000000e+0 -0.92387953\r
+v 0.47139674 0.0000000e+0 -0.88192126\r
+v 0.55557023 0.0000000e+0 -0.83146961\r
+v 0.63439328 0.0000000e+0 -0.77301045\r
+v 0.70710678 0.0000000e+0 -0.70710678\r
+v 0.77301045 0.0000000e+0 -0.63439328\r
+v 0.83146961 0.0000000e+0 -0.55557023\r
+v 0.88192126 0.0000000e+0 -0.47139674\r
+v 0.92387953 0.0000000e+0 -0.38268343\r
+v 0.95694034 0.0000000e+0 -0.29028468\r
+v 0.98078528 0.0000000e+0 -0.19509032\r
+v 0.99518473 0.0000000e+0 -9.8017140e-2\r
+vt 0.0000000e+0 1.1272913e-14\r
+vt 3.4972025e-15 1.00000000\r
+vt 1.5625000e-2 1.00000000\r
+vt 1.5625000e-2 2.1616101e-14\r
+vt 3.1250000e-2 6.1013189e-15\r
+vt 3.1250000e-2 1.00000000\r
+vt 4.6875000e-2 1.00000000\r
+vt 4.6875000e-2 2.3533659e-14\r
+vt 6.2500000e-2 9.0648167e-15\r
+vt 6.2500000e-2 1.00000000\r
+vt 7.8125000e-2 1.00000000\r
+vt 7.8125000e-2 1.9872867e-14\r
+vt 9.3750000e-2 9.0648167e-15\r
+vt 9.3750000e-2 1.00000000\r
+vt 0.10937500 1.00000000\r
+vt 0.10937500 2.1499886e-14\r
+vt 0.12500000 5.3459175e-15\r
+vt 0.12500000 1.00000000\r
+vt 0.14062500 2.1209347e-14\r
+vt 0.14062500 1.00000000\r
+vt 0.15625000 7.4377983e-15\r
+vt 0.15625000 1.00000000\r
+vt 0.17187500 2.0453945e-14\r
+vt 0.17187500 1.00000000\r
+vt 0.18750000 9.1810323e-15\r
+vt 0.18750000 1.00000000\r
+vt 0.20312500 1.6618831e-14\r
+vt 0.20312500 1.00000000\r
+vt 0.21875000 8.3094153e-15\r
+vt 0.21875000 1.00000000\r
+vt 0.23437500 1.5398567e-14\r
+vt 0.23437500 1.00000000\r
+vt 0.25000000 1.2144530e-14\r
+vt 0.25000000 1.00000000\r
+vt 0.26562500 1.00000000\r
+vt 0.26562500 1.2609392e-14\r
+vt 0.28125000 9.6458947e-15\r
+vt 0.28125000 1.00000000\r
+vt 0.29687500 1.5979645e-14\r
+vt 0.29687500 1.00000000\r
+vt 0.31250000 8.0188763e-15\r
+vt 0.31250000 1.00000000\r
+vt 0.32812500 1.00000000\r
+vt 0.32812500 1.4817489e-14\r
+vt 0.34375000 1.1272913e-14\r
+vt 0.34375000 1.00000000\r
+vt 0.35937500 1.2725608e-14\r
+vt 0.35937500 1.00000000\r
+vt 0.37500000 7.8445529e-15\r
+vt 0.37500000 1.00000000\r
+vt 0.39062500 1.3481009e-14\r
+vt 0.39062500 1.00000000\r
+vt 0.40625000 7.5540139e-15\r
+vt 0.40625000 1.00000000\r
+vt 0.42187500 1.00000000\r
+vt 0.42187500 1.1563452e-14\r
+vt 0.43750000 1.1853991e-14\r
+vt 0.43750000 1.00000000\r
+vt 0.45312500 1.00000000\r
+vt 0.45312500 7.8445529e-15\r
+vt 0.46875000 9.9364337e-15\r
+vt 0.46875000 1.00000000\r
+vt 0.48437500 1.00000000\r
+vt 0.48437500 1.0401296e-14\r
+vt 0.50000000 8.5999543e-15\r
+vt 0.50000000 1.00000000\r
+vt 0.51562500 6.7986125e-15\r
+vt 0.51562500 1.00000000\r
+vt 0.53125000 1.0982374e-14\r
+vt 0.53125000 1.00000000\r
+vt 0.54687500 4.5905161e-15\r
+vt 0.54687500 1.00000000\r
+vt 0.56250000 7.7283373e-15\r
+vt 0.56250000 1.00000000\r
+vt 0.57812500 6.1013189e-15\r
+vt 0.57812500 1.00000000\r
+vt 0.59375000 6.5080735e-15\r
+vt 0.59375000 1.00000000\r
+vt 0.60937500 5.3459175e-15\r
+vt 0.60937500 1.00000000\r
+vt 0.62500000 1.00000000\r
+vt 0.62500000 8.4256309e-15\r
+vt 0.64062500 3.5445758e-15\r
+vt 0.64062500 1.00000000\r
+vt 0.65625000 1.0691835e-14\r
+vt 0.65625000 1.00000000\r
+vt 0.67187500 1.00000000\r
+vt 0.67187500 2.0918808e-15\r
+vt 0.68750000 1.0052649e-14\r
+vt 0.68750000 1.00000000\r
+vt 0.70312500 1.00000000\r
+vt 0.70312500 3.1378212e-15\r
+vt 0.71875000 1.0517512e-14\r
+vt 0.71875000 1.00000000\r
+vt 0.73437500 1.00000000\r
+vt 0.73437500 5.3459175e-15\r
+vt 0.75000000 1.2725608e-14\r
+vt 0.75000000 1.00000000\r
+vt 0.76562500 1.00000000\r
+vt 0.76562500 3.1378212e-15\r
+vt 0.78125000 1.0226973e-14\r
+vt 0.78125000 1.00000000\r
+vt 0.79687500 1.00000000\r
+vt 0.79687500 3.7188992e-15\r
+vt 0.81250000 9.7621103e-15\r
+vt 0.81250000 1.00000000\r
+vt 0.82812500 1.00000000\r
+vt 0.82812500 4.8810551e-15\r
+vt 0.84375000 1.1563452e-14\r
+vt 0.84375000 1.00000000\r
+vt 0.85937500 1.00000000\r
+vt 0.85937500 3.1378212e-15\r
+vt 0.87500000 8.8904933e-15\r
+vt 0.87500000 1.00000000\r
+vt 0.89062500 1.00000000\r
+vt 0.89062500 1.8013418e-15\r
+vt 0.90625000 1.2144530e-14\r
+vt 0.90625000 1.00000000\r
+vt 0.92187500 1.00000000\r
+vt 0.92187500 0.0000000e+0\r
+vt 0.93750000 1.0691835e-14\r
+vt 0.93750000 1.00000000\r
+vt 0.95312500 1.00000000\r
+vt 0.95312500 1.5108028e-15\r
+vt 0.96875000 1.1853991e-14\r
+vt 0.96875000 1.00000000\r
+vt 0.98437500 1.00000000\r
+vt 0.98437500 3.1378212e-15\r
+vt 1.00000000 1.1272913e-14\r
+vt 1.00000000 1.00000000\r
+vn 1.00000000 0.0000000e+0 -2.0841787e-17\r
+vn 0.99518473 0.0000000e+0 9.8017140e-2\r
+vn 0.98078528 0.0000000e+0 0.19509032\r
+vn 0.95694034 0.0000000e+0 0.29028468\r
+vn 0.92387953 0.0000000e+0 0.38268343\r
+vn 0.88192126 0.0000000e+0 0.47139674\r
+vn 0.83146961 0.0000000e+0 0.55557023\r
+vn 0.77301045 0.0000000e+0 0.63439328\r
+vn 0.70710678 0.0000000e+0 0.70710678\r
+vn 0.63439328 0.0000000e+0 0.77301045\r
+vn 0.55557023 0.0000000e+0 0.83146961\r
+vn 0.47139674 0.0000000e+0 0.88192126\r
+vn 0.38268343 0.0000000e+0 0.92387953\r
+vn 0.29028468 0.0000000e+0 0.95694034\r
+vn 0.19509032 0.0000000e+0 0.98078528\r
+vn 9.8017140e-2 0.0000000e+0 0.99518473\r
+vn 6.9472622e-18 0.0000000e+0 1.00000000\r
+vn -9.8017140e-2 0.0000000e+0 0.99518473\r
+vn -0.19509032 0.0000000e+0 0.98078528\r
+vn -0.29028468 0.0000000e+0 0.95694034\r
+vn -0.38268343 0.0000000e+0 0.92387953\r
+vn -0.47139674 0.0000000e+0 0.88192126\r
+vn -0.55557023 0.0000000e+0 0.83146961\r
+vn -0.63439328 0.0000000e+0 0.77301045\r
+vn -0.70710678 0.0000000e+0 0.70710678\r
+vn -0.77301045 0.0000000e+0 0.63439328\r
+vn -0.83146961 0.0000000e+0 0.55557023\r
+vn -0.88192126 0.0000000e+0 0.47139674\r
+vn -0.92387953 0.0000000e+0 0.38268343\r
+vn -0.95694034 0.0000000e+0 0.29028468\r
+vn -0.98078528 0.0000000e+0 0.19509032\r
+vn -0.99518473 0.0000000e+0 9.8017140e-2\r
+vn -1.00000000 0.0000000e+0 5.6620187e-16\r
+vn -0.99518473 0.0000000e+0 -9.8017140e-2\r
+vn -0.98078528 0.0000000e+0 -0.19509032\r
+vn -0.95694034 0.0000000e+0 -0.29028468\r
+vn -0.92387953 0.0000000e+0 -0.38268343\r
+vn -0.88192126 0.0000000e+0 -0.47139674\r
+vn -0.83146961 0.0000000e+0 -0.55557023\r
+vn -0.77301045 0.0000000e+0 -0.63439328\r
+vn -0.70710678 0.0000000e+0 -0.70710678\r
+vn -0.63439328 0.0000000e+0 -0.77301045\r
+vn -0.55557023 0.0000000e+0 -0.83146961\r
+vn -0.47139674 0.0000000e+0 -0.88192126\r
+vn -0.38268343 0.0000000e+0 -0.92387953\r
+vn -0.29028468 0.0000000e+0 -0.95694034\r
+vn -0.19509032 0.0000000e+0 -0.98078528\r
+vn -9.8017140e-2 0.0000000e+0 -0.99518473\r
+vn 0.0000000e+0 0.0000000e+0 -1.00000000\r
+vn 9.8017140e-2 0.0000000e+0 -0.99518473\r
+vn 0.19509032 0.0000000e+0 -0.98078528\r
+vn 0.29028468 0.0000000e+0 -0.95694034\r
+vn 0.38268343 0.0000000e+0 -0.92387953\r
+vn 0.47139674 0.0000000e+0 -0.88192126\r
+vn 0.55557023 0.0000000e+0 -0.83146961\r
+vn 0.63439328 0.0000000e+0 -0.77301045\r
+vn 0.70710678 0.0000000e+0 -0.70710678\r
+vn 0.77301045 0.0000000e+0 -0.63439328\r
+vn 0.83146961 0.0000000e+0 -0.55557023\r
+vn 0.88192126 0.0000000e+0 -0.47139674\r
+vn 0.92387953 0.0000000e+0 -0.38268343\r
+vn 0.95694034 0.0000000e+0 -0.29028468\r
+vn 0.98078528 0.0000000e+0 -0.19509032\r
+vn 0.99518473 0.0000000e+0 -9.8017140e-2\r
+vn 1.00000000 0.0000000e+0 -1.9104971e-17\r
+vn 0.99518473 0.0000000e+0 9.8017140e-2\r
+vn 0.98078528 0.0000000e+0 0.19509032\r
+vn 0.95694034 0.0000000e+0 0.29028468\r
+vn 0.92387953 0.0000000e+0 0.38268343\r
+vn 0.88192126 0.0000000e+0 0.47139674\r
+vn 0.83146961 0.0000000e+0 0.55557023\r
+vn 0.77301045 0.0000000e+0 0.63439328\r
+vn 0.70710678 0.0000000e+0 0.70710678\r
+vn 0.63439328 0.0000000e+0 0.77301045\r
+vn 0.55557023 0.0000000e+0 0.83146961\r
+vn 0.47139674 0.0000000e+0 0.88192126\r
+vn 0.38268343 0.0000000e+0 0.92387953\r
+vn 0.29028468 0.0000000e+0 0.95694034\r
+vn 0.19509032 0.0000000e+0 0.98078528\r
+vn 9.8017140e-2 0.0000000e+0 0.99518473\r
+vn 6.9472622e-18 0.0000000e+0 1.00000000\r
+vn -9.8017140e-2 0.0000000e+0 0.99518473\r
+vn -0.19509032 0.0000000e+0 0.98078528\r
+vn -0.29028468 0.0000000e+0 0.95694034\r
+vn -0.38268343 0.0000000e+0 0.92387953\r
+vn -0.47139674 0.0000000e+0 0.88192126\r
+vn -0.55557023 0.0000000e+0 0.83146961\r
+vn -0.63439328 0.0000000e+0 0.77301045\r
+vn -0.70710678 0.0000000e+0 0.70710678\r
+vn -0.77301045 0.0000000e+0 0.63439328\r
+vn -0.83146961 0.0000000e+0 0.55557023\r
+vn -0.88192126 0.0000000e+0 0.47139674\r
+vn -0.92387953 0.0000000e+0 0.38268343\r
+vn -0.95694034 0.0000000e+0 0.29028468\r
+vn -0.98078528 0.0000000e+0 0.19509032\r
+vn -0.99518473 0.0000000e+0 9.8017140e-2\r
+vn -1.00000000 0.0000000e+0 5.6620187e-16\r
+vn -0.99518473 0.0000000e+0 -9.8017140e-2\r
+vn -0.98078528 0.0000000e+0 -0.19509032\r
+vn -0.95694034 0.0000000e+0 -0.29028468\r
+vn -0.92387953 0.0000000e+0 -0.38268343\r
+vn -0.88192126 0.0000000e+0 -0.47139674\r
+vn -0.83146961 0.0000000e+0 -0.55557023\r
+vn -0.77301045 0.0000000e+0 -0.63439328\r
+vn -0.70710678 0.0000000e+0 -0.70710678\r
+vn -0.63439328 0.0000000e+0 -0.77301045\r
+vn -0.55557023 0.0000000e+0 -0.83146961\r
+vn -0.47139674 0.0000000e+0 -0.88192126\r
+vn -0.38268343 0.0000000e+0 -0.92387953\r
+vn -0.29028468 0.0000000e+0 -0.95694034\r
+vn -0.19509032 0.0000000e+0 -0.98078528\r
+vn -9.8017140e-2 0.0000000e+0 -0.99518473\r
+vn 0.0000000e+0 0.0000000e+0 -1.00000000\r
+vn 9.8017140e-2 0.0000000e+0 -0.99518473\r
+vn 0.19509032 0.0000000e+0 -0.98078528\r
+vn 0.29028468 0.0000000e+0 -0.95694034\r
+vn 0.38268343 0.0000000e+0 -0.92387953\r
+vn 0.47139674 0.0000000e+0 -0.88192126\r
+vn 0.55557023 0.0000000e+0 -0.83146961\r
+vn 0.63439328 0.0000000e+0 -0.77301045\r
+vn 0.70710678 0.0000000e+0 -0.70710678\r
+vn 0.77301045 0.0000000e+0 -0.63439328\r
+vn 0.83146961 0.0000000e+0 -0.55557023\r
+vn 0.88192126 0.0000000e+0 -0.47139674\r
+vn 0.92387953 0.0000000e+0 -0.38268343\r
+vn 0.95694034 0.0000000e+0 -0.29028468\r
+vn 0.98078528 0.0000000e+0 -0.19509032\r
+vn 0.99518473 0.0000000e+0 -9.8017140e-2\r
+g cylinder1_geom/goal/goal\r
+usemtl geom/goal/goal\r
+s 1\r
+f 1/34/1 65/33/65 64/35/64\r
+f 2/32/2 65/33/65 1/34/1\r
+f 2/32/2 67/29/67 66/31/66\r
+f 3/30/3 67/29/67 2/32/2\r
+f 4/28/4 67/29/67 3/30/3\r
+f 4/28/4 69/25/69 68/27/68\r
+f 5/26/5 69/25/69 4/28/4\r
+f 6/24/6 69/25/69 5/26/5\r
+f 6/24/6 71/21/71 70/23/70\r
+f 7/22/7 71/21/71 6/24/6\r
+f 8/20/8 71/21/71 7/22/7\r
+f 8/20/8 73/17/73 72/19/72\r
+f 9/18/9 73/17/73 8/20/8\r
+f 10/15/10 73/17/73 9/18/9\r
+f 10/15/10 75/13/75 74/16/74\r
+f 11/14/11 75/13/75 10/15/10\r
+f 12/11/12 75/13/75 11/14/11\r
+f 12/11/12 77/9/77 76/12/76\r
+f 13/10/13 77/9/77 12/11/12\r
+f 14/7/14 77/9/77 13/10/13\r
+f 14/7/14 79/5/79 78/8/78\r
+f 15/6/15 79/5/79 14/7/14\r
+f 16/3/16 79/5/79 15/6/15\r
+f 16/3/16 81/1/81 80/4/80\r
+f 17/2/17 81/1/81 16/3/16\r
+f 18/127/18 81/129/81 17/130/17\r
+f 18/127/18 83/125/83 82/128/82\r
+f 19/126/19 83/125/83 18/127/18\r
+f 20/123/20 83/125/83 19/126/19\r
+f 20/123/20 85/121/85 84/124/84\r
+f 21/122/21 85/121/85 20/123/20\r
+f 22/119/22 85/121/85 21/122/21\r
+f 22/119/22 87/117/87 86/120/86\r
+f 23/118/23 87/117/87 22/119/22\r
+f 24/115/24 87/117/87 23/118/23\r
+f 24/115/24 89/113/89 88/116/88\r
+f 25/114/25 89/113/89 24/115/24\r
+f 26/111/26 89/113/89 25/114/25\r
+f 26/111/26 91/109/91 90/112/90\r
+f 27/110/27 91/109/91 26/111/26\r
+f 28/107/28 91/109/91 27/110/27\r
+f 28/107/28 93/105/93 92/108/92\r
+f 29/106/29 93/105/93 28/107/28\r
+f 30/103/30 93/105/93 29/106/29\r
+f 30/103/30 95/101/95 94/104/94\r
+f 31/102/31 95/101/95 30/103/30\r
+f 32/99/32 95/101/95 31/102/31\r
+f 32/99/32 97/97/97 96/100/96\r
+f 33/98/33 97/97/97 32/99/32\r
+f 34/95/34 97/97/97 33/98/33\r
+f 34/95/34 99/93/99 98/96/98\r
+f 35/94/35 99/93/99 34/95/34\r
+f 36/91/36 99/93/99 35/94/35\r
+f 36/91/36 101/89/101 100/92/100\r
+f 37/90/37 101/89/101 36/91/36\r
+f 38/87/38 101/89/101 37/90/37\r
+f 38/87/38 103/85/103 102/88/102\r
+f 39/86/39 103/85/103 38/87/38\r
+f 40/84/40 103/85/103 39/86/39\r
+f 40/84/40 105/82/105 104/83/104\r
+f 41/81/41 105/82/105 40/84/40\r
+f 42/80/42 105/82/105 41/81/41\r
+f 42/80/42 107/77/107 106/79/106\r
+f 43/78/43 107/77/107 42/80/42\r
+f 44/76/44 107/77/107 43/78/43\r
+f 44/76/44 109/73/109 108/75/108\r
+f 45/74/45 109/73/109 44/76/44\r
+f 46/72/46 109/73/109 45/74/45\r
+f 46/72/46 111/69/111 110/71/110\r
+f 47/70/47 111/69/111 46/72/46\r
+f 48/68/48 111/69/111 47/70/47\r
+f 48/68/48 113/65/113 112/67/112\r
+f 49/66/49 113/65/113 48/68/48\r
+f 50/63/50 113/65/113 49/66/49\r
+f 50/63/50 115/61/115 114/64/114\r
+f 51/62/51 115/61/115 50/63/50\r
+f 52/59/52 115/61/115 51/62/51\r
+f 52/59/52 117/57/117 116/60/116\r
+f 53/58/53 117/57/117 52/59/52\r
+f 54/55/54 117/57/117 53/58/53\r
+f 54/55/54 119/53/119 118/56/118\r
+f 55/54/55 119/53/119 54/55/54\r
+f 56/52/56 119/53/119 55/54/55\r
+f 56/52/56 121/49/121 120/51/120\r
+f 57/50/57 121/49/121 56/52/56\r
+f 58/48/58 121/49/121 57/50/57\r
+f 58/48/58 123/45/123 122/47/122\r
+f 59/46/59 123/45/123 58/48/58\r
+f 60/43/60 123/45/123 59/46/59\r
+f 60/43/60 125/41/125 124/44/124\r
+f 61/42/61 125/41/125 60/43/60\r
+f 62/40/62 125/41/125 61/42/61\r
+f 62/40/62 127/37/127 126/39/126\r
+f 63/38/63 127/37/127 62/40/62\r
+f 64/35/64 65/33/65 128/36/128\r
+f 64/35/64 127/37/127 63/38/63\r
+f 66/31/66 65/33/65 2/32/2\r
+f 68/27/68 67/29/67 4/28/4\r
+f 70/23/70 69/25/69 6/24/6\r
+f 72/19/72 71/21/71 8/20/8\r
+f 74/16/74 73/17/73 10/15/10\r
+f 76/12/76 75/13/75 12/11/12\r
+f 78/8/78 77/9/77 14/7/14\r
+f 80/4/80 79/5/79 16/3/16\r
+f 82/128/82 81/129/81 18/127/18\r
+f 84/124/84 83/125/83 20/123/20\r
+f 86/120/86 85/121/85 22/119/22\r
+f 88/116/88 87/117/87 24/115/24\r
+f 90/112/90 89/113/89 26/111/26\r
+f 92/108/92 91/109/91 28/107/28\r
+f 94/104/94 93/105/93 30/103/30\r
+f 96/100/96 95/101/95 32/99/32\r
+f 98/96/98 97/97/97 34/95/34\r
+f 100/92/100 99/93/99 36/91/36\r
+f 102/88/102 101/89/101 38/87/38\r
+f 104/83/104 103/85/103 40/84/40\r
+f 106/79/106 105/82/105 42/80/42\r
+f 108/75/108 107/77/107 44/76/44\r
+f 110/71/110 109/73/109 46/72/46\r
+f 112/67/112 111/69/111 48/68/48\r
+f 114/64/114 113/65/113 50/63/50\r
+f 116/60/116 115/61/115 52/59/52\r
+f 118/56/118 117/57/117 54/55/54\r
+f 120/51/120 119/53/119 56/52/56\r
+f 122/47/122 121/49/121 58/48/58\r
+f 124/44/124 123/45/123 60/43/60\r
+f 126/39/126 125/41/125 62/40/62\r
+f 128/36/128 127/37/127 64/35/64\r
diff --git a/data/geom/goal/goal.png b/data/geom/goal/goal.png
new file mode 100644 (file)
index 0000000..52d2209
Binary files /dev/null and b/data/geom/goal/goal.png differ
diff --git a/data/geom/goal/goal.sol b/data/geom/goal/goal.sol
new file mode 100644 (file)
index 0000000..1077e09
Binary files /dev/null and b/data/geom/goal/goal.sol differ
diff --git a/data/geom/goal/goal.wings b/data/geom/goal/goal.wings
new file mode 100644 (file)
index 0000000..ad98b1f
Binary files /dev/null and b/data/geom/goal/goal.wings differ
index caa9d66..3ec04bf 100644 (file)
@@ -25,6 +25,8 @@
 #include "config.h"
 #include "video.h"
 
+#include "solid_draw.h"
+
 #define PI 3.1415926535897932
 
 /*---------------------------------------------------------------------------*/
@@ -79,46 +81,21 @@ void mark_free(void)
 
 /*---------------------------------------------------------------------------*/
 
-static GLuint goal_list;
+static struct s_full geom_goal;
 
 void goal_init(void)
 {
-    int i, n = 32;
-
-    goal_list = glGenLists(1);
-
-    glNewList(goal_list, GL_COMPILE);
-    {
-        glBegin(GL_QUAD_STRIP);
-        {
-            for (i = 0; i <= n; i++)
-            {
-                float x = fcosf(2.f * PI * i / n);
-                float y = fsinf(2.f * PI * i / n);
-
-                glColor4f(1.0f, 1.0f, 0.0f, 0.5f);
-                glVertex3f(x, 0.0f, y);
-
-                glColor4f(1.0f, 1.0f, 0.0f, 0.0f);
-                glVertex3f(x, GOAL_HEIGHT, y);
-            }
-        }
-        glEnd();
-    }
-    glEndList();
+    sol_load_full(&geom_goal, "geom/goal/goal.sol", 0);
 }
 
 void goal_free(void)
 {
-    if (glIsList(goal_list))
-        glDeleteLists(goal_list, 1);
-
-    goal_list = 0;
+    sol_free_full(&geom_goal);
 }
 
 void goal_draw(void)
 {
-    glCallList(goal_list);
+    sol_draw(&geom_goal.draw, 1, 1);
 }
 
 /*---------------------------------------------------------------------------*/
index 68437c9..14fb8f6 100644 (file)
@@ -110,16 +110,10 @@ static void sol_bill_enable(const struct s_draw *draw)
 
     glTexCoordPointer(2, GL_FLOAT, s * 4, (GLvoid *) (    0));
     glVertexPointer  (2, GL_FLOAT, s * 4, (GLvoid *) (s * 2));
-
-    glDisable(GL_LIGHTING);
-    glDepthMask(GL_FALSE);
 }
 
 static void sol_bill_disable(void)
 {
-    glDepthMask(GL_TRUE);
-    glEnable(GL_LIGHTING);
-
     glBindBuffer(GL_ARRAY_BUFFER, 0);
 
     glDisableClientState(GL_TEXTURE_COORD_ARRAY);
@@ -744,6 +738,9 @@ void sol_refl(const struct s_draw *draw)
 
 void sol_back(const struct s_draw *draw, float n, float f, float t)
 {
+    glDisable(GL_LIGHTING);
+    glDepthMask(GL_FALSE);
+
     sol_bill_enable(draw);
     {
         const struct d_mtrl *mq = &default_draw_mtrl;
@@ -800,6 +797,9 @@ void sol_back(const struct s_draw *draw, float n, float f, float t)
         mq = sol_apply_mtrl(&default_draw_mtrl, mq);
     }
     sol_bill_disable();
+
+    glDepthMask(GL_TRUE);
+    glEnable(GL_LIGHTING);
 }
 
 void sol_bill(const struct s_draw *draw, const float *M, float t)