half-assed 3D graphics attempt underway
[regis] / test.c
1 #include <stdio.h>
2 #include <signal.h>
3 #include <math.h>
4 #include <unistd.h>
5 #include "regis.h"
6 #include "sincos.h"
7 #include "x3d.h"
8
9 #define X16INT(x)       ((x) << 16)
10
11 static void draw(void);
12 static void sig(int s);
13
14 static volatile int done;
15 int tm = 0;
16
17 int main(int argc, char **argv)
18 {
19         int pg = 1;
20         signal(SIGINT, sig);
21
22         x3d_projection(45.0, (WIDTH << 16) / HEIGHT, 65536 / 2, 65536 * 500);
23
24         while(!done) {
25
26                 regis_enter();
27                 regis_draw_page(pg);
28                 regis_clear();
29
30                 draw();
31
32                 regis_show_page(pg);
33                 pg = (pg + 1) & 1;
34                 regis_leave();
35
36                 usleep(10000);
37                 ++tm;
38         }
39
40         regis_enter();
41         regis_clear();
42         regis_leave();
43         return 0;
44 }
45
46 static void draw(void)
47 {
48         x3d_load_identity();
49         x3d_translate(0, 0, X16INT(6));
50         x3d_rotate(X16INT(25), 65536, 0, 0);
51         x3d_rotate(tm << 10, 0, 65536, 0);
52
53         x3d_color_index(3);
54
55 }
56
57 static void sig(int s)
58 {
59         done = 1;
60 }