gba-x3dtest

view src/ggen.c @ 13:2070a81127f2

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 23 Jun 2014 08:28:28 +0300
parents ecc022a21279
children c398d834d64a
line source
1 #include <stdlib.h>
2 #include "ggen.h"
3 #include "mesh.h"
5 #define X1 65536
6 #define VERTEX(x, y, z) \
7 do { \
8 *vptr++ = x; \
9 *vptr++ = y; \
10 *vptr++ = z; \
11 } while(0)
13 #define COLOR(r, g, b) \
14 do { \
15 *cptr++ = r; \
16 *cptr++ = g; \
17 *cptr++ = b; \
18 } while(0)
20 int gen_box(struct mesh *m)
21 {
22 int i;
23 int num_faces = 8;
24 int num_verts = num_faces * 4;
25 int32_t v[8][3] = {
26 {-X1, -X1, -X1}, {X1, -X1, -X1}, {X1, -X1, X1}, {-X1, -X1, X1},
27 {-X1, X1, -X1}, {X1, X1, -X1}, {X1, X1, X1}, {-X1, X1, X1}
28 };
29 int32_t *vptr, *cptr;
32 m->prim = X3D_QUADS;
33 m->nverts = num_verts;
34 if(!(m->verts = malloc(num_verts * 3 * sizeof *m->verts))) {
35 return -1;
36 }
37 vptr = m->verts;
39 if(!(m->colors = malloc(num_verts * 3 * sizeof *m->colors))) {
40 return -1;
41 }
42 cptr = m->colors;
44 /* -Y */
45 VERTEX(v[0][0], v[0][1], v[0][2]);
46 VERTEX(v[1][0], v[1][1], v[1][2]);
47 VERTEX(v[2][0], v[2][1], v[2][2]);
48 VERTEX(v[3][0], v[3][1], v[3][2]);
49 for(i=0; i<4; i++) COLOR(65536, 0, 65536);
51 /* +Y */
52 VERTEX(v[4][0], v[4][1], v[4][2]);
53 VERTEX(v[5][0], v[5][1], v[5][2]);
54 VERTEX(v[6][0], v[6][1], v[6][2]);
55 VERTEX(v[7][0], v[7][1], v[7][2]);
56 for(i=0; i<4; i++) COLOR(0, 65536, 0);
58 /* -Z */
59 VERTEX(v[0][0], v[0][1], v[0][2]);
60 VERTEX(v[4][0], v[4][1], v[4][2]);
61 VERTEX(v[5][0], v[5][1], v[5][2]);
62 VERTEX(v[1][0], v[1][1], v[1][2]);
63 for(i=0; i<4; i++) COLOR(65536, 65536, 0);
65 /* +Z */
66 VERTEX(v[2][0], v[2][1], v[2][2]);
67 VERTEX(v[6][0], v[6][1], v[6][2]);
68 VERTEX(v[7][0], v[7][1], v[7][2]);
69 VERTEX(v[3][0], v[3][1], v[3][2]);
70 for(i=0; i<4; i++) COLOR(0, 0, 65536);
72 /* +X */
73 VERTEX(v[1][0], v[1][1], v[1][2]);
74 VERTEX(v[5][0], v[5][1], v[5][2]);
75 VERTEX(v[6][0], v[6][1], v[6][2]);
76 VERTEX(v[2][0], v[2][1], v[2][2]);
77 for(i=0; i<4; i++) COLOR(65536, 0, 0);
79 /* -X */
80 VERTEX(v[3][0], v[3][1], v[3][2]);
81 VERTEX(v[7][0], v[7][1], v[7][2]);
82 VERTEX(v[4][0], v[4][1], v[4][2]);
83 VERTEX(v[0][0], v[0][1], v[0][2]);
84 for(i=0; i<4; i++) COLOR(0, 65536, 65536);
86 return 0;
87 }