3D setup
[metatoy] / src / game.c
1 #include <string.h>
2 #include "game.h"
3 #include "colormgr.h"
4 #include "3dgfx.h"
5 #include "mesh.h"
6
7 static struct g3d_mesh mesh;
8
9 int game_init(void)
10 {
11         init_colormgr();
12
13         g3d_init();
14         g3d_framebuffer(320, 200, framebuf);
15         g3d_viewport(0, 0, 320, 200);
16
17         g3d_clear_color(0, 0, 0);
18
19         g3d_matrix_mode(G3D_PROJECTION);
20         g3d_load_identity();
21         g3d_perspective(50.0f, 1.33333, 0.5, 500.0);
22
23         g3d_enable(G3D_CULL_FACE);
24         g3d_enable(G3D_DEPTH_TEST);
25         g3d_enable(G3D_LIGHTING);
26         g3d_enable(G3D_LIGHT0);
27
28         g3d_polygon_mode(G3D_GOURAUD);
29
30         gen_torus_mesh(&mesh, 2.0, 0.7, 24, 12);
31         return 0;
32 }
33
34 void game_shutdown(void)
35 {
36 }
37
38 void game_draw(void)
39 {
40         unsigned long msec = game_getmsec();
41         float tsec = (float)msec / 1000.0f;
42
43         g3d_clear(G3D_COLOR_BUFFER_BIT | G3D_DEPTH_BUFFER_BIT);
44
45         g3d_matrix_mode(G3D_MODELVIEW);
46         g3d_load_identity();
47         g3d_translate(0, 0, -8);
48         g3d_rotate(tsec * 50.0f, 1, 0, 0);
49         g3d_rotate(tsec * 30.0f, 0, 0, 1);
50
51         draw_mesh(&mesh);
52
53         game_swap_buffers();
54 }
55
56 void game_keyboard(int key, int press)
57 {
58         if(key == 27) game_quit();
59 }
60
61 void game_mouse(int bn, int press, int x, int y)
62 {
63 }
64
65 void game_motion(int x, int y)
66 {
67 }