half-assed 3D graphics attempt underway
[regis] / test.c
diff --git a/test.c b/test.c
index c134b3f..72b6029 100644 (file)
--- a/test.c
+++ b/test.c
@@ -3,35 +3,38 @@
 #include <math.h>
 #include <unistd.h>
 #include "regis.h"
+#include "sincos.h"
+#include "x3d.h"
 
+#define X16INT(x)      ((x) << 16)
+
+static void draw(void);
 static void sig(int s);
 
 static volatile int done;
+int tm = 0;
 
 int main(int argc, char **argv)
 {
        int pg = 1;
-       float tm = 0.0f;
        signal(SIGINT, sig);
 
+       x3d_projection(45.0, (WIDTH << 16) / HEIGHT, 65536 / 2, 65536 * 500);
+
        while(!done) {
-               float dx = cos(tm) * 50.0;
-               float dy = sin(tm * 2.0) * 50.0;
-               tm += 0.01f;
 
                regis_enter();
                regis_draw_page(pg);
                regis_clear();
-               regis_abspos(100 + dx, 100 + dy);
-               regis_begin_vector(REGIS_BOUNDED | REGIS_FILL);
-               regis_absv(300 + dx, 300 + dy);
-               regis_absv(80 + dx, 400 + dy);
-               regis_end_vector();
+
+               draw();
+
                regis_show_page(pg);
                pg = (pg + 1) & 1;
                regis_leave();
 
                usleep(10000);
+               ++tm;
        }
 
        regis_enter();
@@ -40,6 +43,17 @@ int main(int argc, char **argv)
        return 0;
 }
 
+static void draw(void)
+{
+       x3d_load_identity();
+       x3d_translate(0, 0, X16INT(6));
+       x3d_rotate(X16INT(25), 65536, 0, 0);
+       x3d_rotate(tm << 10, 0, 65536, 0);
+
+       x3d_color_index(3);
+
+}
+
 static void sig(int s)
 {
        done = 1;