split the polyfiller to a preprocessor-based template file, included
[dosdemo] / src / polytest.c
index b81e9aa..e7c3cdf 100644 (file)
@@ -49,9 +49,12 @@ static int init(void)
        gen_cube(&cube, 1.0);
        gen_torus(&torus, 1.0, 0.25, 24, 12);
 
+#ifdef DEBUG_POLYFILL
        lowres_width = fb_width / LOWRES_SCALE;
        lowres_height = fb_height / LOWRES_SCALE;
        lowres_pixels = malloc(lowres_width * lowres_height * 2);
+       scr.draw = draw_debug;
+#endif
 
        return 0;
 }
@@ -71,6 +74,10 @@ static void start(long trans_time)
        g3d_perspective(50.0, 1.3333333, 0.5, 100.0);
 
        g3d_enable(G3D_CULL_FACE);
+       g3d_enable(G3D_LIGHTING);
+       g3d_enable(G3D_LIGHT0);
+
+       g3d_polygon_mode(G3D_GOURAUD);
 }
 
 static void update(void)
@@ -79,7 +86,7 @@ static void update(void)
        static unsigned int prev_bmask;
 
        if(mouse_bmask) {
-               if(mouse_bmask ^ prev_bmask == 0) {
+               if((mouse_bmask ^ prev_bmask) == 0) {
                        int dx = mouse_x - prev_mx;
                        int dy = mouse_y - prev_my;
 
@@ -97,10 +104,34 @@ static void update(void)
        prev_bmask = mouse_bmask;
 }
 
+
 static void draw(void)
 {
        update();
 
+       memset(fb_pixels, 0, fb_width * fb_height * 2);
+
+       g3d_matrix_mode(G3D_MODELVIEW);
+       g3d_load_identity();
+       g3d_translate(0, 0, -3);
+       g3d_rotate(phi, 1, 0, 0);
+       g3d_rotate(theta, 0, 1, 0);
+
+       g3d_light_pos(0, -10, 10, 20);
+
+       zsort(&torus);
+
+       g3d_mtl_diffuse(0.3, 0.6, 1.0);
+       draw_mesh(&torus);
+
+       /*draw_mesh(&cube);*/
+       swap_buffers(fb_pixels);
+}
+
+static void draw_debug(void)
+{
+       update();
+
        memset(lowres_pixels, 0, lowres_width * lowres_height * 2);
 
        g3d_matrix_mode(G3D_MODELVIEW);