gba-trycatch
diff src/ggen.c @ 15:b755fb002f17
foo
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 25 Jun 2014 17:02:48 +0300 |
parents | c398d834d64a |
children |
line diff
1.1 --- a/src/ggen.c Mon Jun 23 10:33:24 2014 +0300 1.2 +++ b/src/ggen.c Wed Jun 25 17:02:48 2014 +0300 1.3 @@ -17,19 +17,25 @@ 1.4 *cptr++ = b; \ 1.5 } while(0) 1.6 1.7 +#define TEXCOORD(u, v) \ 1.8 + do { \ 1.9 + *tptr++ = u; \ 1.10 + *tptr++ = v; \ 1.11 + } while(0) 1.12 + 1.13 int gen_box(struct mesh *m) 1.14 { 1.15 int i; 1.16 - int num_faces = 12; 1.17 - int num_verts = num_faces * 3; 1.18 + int num_faces = 6; 1.19 + int num_verts = num_faces * 4; 1.20 int32_t v[8][3] = { 1.21 {-X1, -X1, -X1}, {X1, -X1, -X1}, {X1, -X1, X1}, {-X1, -X1, X1}, 1.22 {-X1, X1, -X1}, {X1, X1, -X1}, {X1, X1, X1}, {-X1, X1, X1} 1.23 }; 1.24 - int32_t *vptr, *cptr; 1.25 + int32_t *vptr, *cptr, *tptr; 1.26 1.27 1.28 - m->prim = X3D_TRIANGLES; 1.29 + m->prim = X3D_QUADS; 1.30 m->nverts = num_verts; 1.31 if(!(m->verts = malloc(num_verts * 3 * sizeof *m->verts))) { 1.32 return -1; 1.33 @@ -41,71 +47,76 @@ 1.34 } 1.35 cptr = m->colors; 1.36 1.37 + if(!(m->texcoords = malloc(num_verts * 2 * sizeof *m->texcoords))) { 1.38 + return -1; 1.39 + } 1.40 + tptr = m->texcoords; 1.41 + 1.42 /* -Y */ 1.43 VERTEX(v[0][0], v[0][1], v[0][2]); 1.44 VERTEX(v[1][0], v[1][1], v[1][2]); 1.45 VERTEX(v[2][0], v[2][1], v[2][2]); 1.46 - for(i=0; i<3; i++) COLOR(32768, 0, 32768); 1.47 - 1.48 - VERTEX(v[0][0], v[0][1], v[0][2]); 1.49 - VERTEX(v[2][0], v[2][1], v[2][2]); 1.50 VERTEX(v[3][0], v[3][1], v[3][2]); 1.51 - for(i=0; i<3; i++) COLOR(65536, 0, 65536); 1.52 + TEXCOORD(65536, 0); 1.53 + TEXCOORD(0, 0); 1.54 + TEXCOORD(0, 65536); 1.55 + TEXCOORD(65536, 65536); 1.56 + for(i=0; i<4; i++) COLOR(65536, 0, 65536); 1.57 1.58 /* +Y */ 1.59 + VERTEX(v[4][0], v[4][1], v[4][2]); 1.60 VERTEX(v[7][0], v[7][1], v[7][2]); 1.61 VERTEX(v[6][0], v[6][1], v[6][2]); 1.62 VERTEX(v[5][0], v[5][1], v[5][2]); 1.63 - for(i=0; i<3; i++) COLOR(0, 32768, 0); 1.64 - 1.65 - VERTEX(v[7][0], v[7][1], v[7][2]); 1.66 - VERTEX(v[5][0], v[5][1], v[5][2]); 1.67 - VERTEX(v[4][0], v[4][1], v[4][2]); 1.68 - for(i=0; i<3; i++) COLOR(0, 65536, 0); 1.69 + TEXCOORD(0, 0); 1.70 + TEXCOORD(0, 65536); 1.71 + TEXCOORD(65536, 65536); 1.72 + TEXCOORD(65536, 0); 1.73 + for(i=0; i<4; i++) COLOR(0, 65536, 0); 1.74 1.75 /* -Z */ 1.76 VERTEX(v[0][0], v[0][1], v[0][2]); 1.77 VERTEX(v[4][0], v[4][1], v[4][2]); 1.78 VERTEX(v[5][0], v[5][1], v[5][2]); 1.79 - for(i=0; i<3; i++) COLOR(32768, 32768, 0); 1.80 - 1.81 - VERTEX(v[0][0], v[0][1], v[0][2]); 1.82 - VERTEX(v[5][0], v[5][1], v[5][2]); 1.83 VERTEX(v[1][0], v[1][1], v[1][2]); 1.84 - for(i=0; i<3; i++) COLOR(65536, 65536, 0); 1.85 + TEXCOORD(0, 0); 1.86 + TEXCOORD(0, 65536); 1.87 + TEXCOORD(65536, 65536); 1.88 + TEXCOORD(65536, 0); 1.89 + for(i=0; i<4; i++) COLOR(65536, 65536, 0); 1.90 1.91 /* +Z */ 1.92 VERTEX(v[2][0], v[2][1], v[2][2]); 1.93 VERTEX(v[6][0], v[6][1], v[6][2]); 1.94 VERTEX(v[7][0], v[7][1], v[7][2]); 1.95 - for(i=0; i<3; i++) COLOR(0, 0, 32768); 1.96 - 1.97 - VERTEX(v[2][0], v[2][1], v[2][2]); 1.98 - VERTEX(v[7][0], v[7][1], v[7][2]); 1.99 VERTEX(v[3][0], v[3][1], v[3][2]); 1.100 - for(i=0; i<3; i++) COLOR(0, 0, 65536); 1.101 + TEXCOORD(0, 0); 1.102 + TEXCOORD(0, 65536); 1.103 + TEXCOORD(65536, 65536); 1.104 + TEXCOORD(65536, 0); 1.105 + for(i=0; i<4; i++) COLOR(0, 0, 65536); 1.106 1.107 /* +X */ 1.108 VERTEX(v[1][0], v[1][1], v[1][2]); 1.109 VERTEX(v[5][0], v[5][1], v[5][2]); 1.110 VERTEX(v[6][0], v[6][1], v[6][2]); 1.111 - for(i=0; i<3; i++) COLOR(32768, 0, 0); 1.112 - 1.113 - VERTEX(v[1][0], v[1][1], v[1][2]); 1.114 - VERTEX(v[6][0], v[6][1], v[6][2]); 1.115 VERTEX(v[2][0], v[2][1], v[2][2]); 1.116 - for(i=0; i<3; i++) COLOR(65536, 0, 0); 1.117 + TEXCOORD(0, 0); 1.118 + TEXCOORD(0, 65536); 1.119 + TEXCOORD(65536, 65536); 1.120 + TEXCOORD(65536, 0); 1.121 + for(i=0; i<4; i++) COLOR(65536, 0, 0); 1.122 1.123 /* -X */ 1.124 VERTEX(v[3][0], v[3][1], v[3][2]); 1.125 VERTEX(v[7][0], v[7][1], v[7][2]); 1.126 VERTEX(v[4][0], v[4][1], v[4][2]); 1.127 - for(i=0; i<3; i++) COLOR(0, 32768, 32768); 1.128 - 1.129 - VERTEX(v[3][0], v[3][1], v[3][2]); 1.130 - VERTEX(v[4][0], v[4][1], v[4][2]); 1.131 VERTEX(v[0][0], v[0][1], v[0][2]); 1.132 - for(i=0; i<3; i++) COLOR(0, 65536, 65536); 1.133 + TEXCOORD(0, 0); 1.134 + TEXCOORD(0, 65536); 1.135 + TEXCOORD(65536, 65536); 1.136 + TEXCOORD(65536, 0); 1.137 + for(i=0; i<4; i++) COLOR(0, 65536, 65536); 1.138 1.139 return 0; 1.140 }