gba-x3dtest

diff src/ggen.c @ 14:c398d834d64a

fixed the rendering bugs
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 23 Jun 2014 10:33:24 +0300
parents 2070a81127f2
children b755fb002f17
line diff
     1.1 --- a/src/ggen.c	Mon Jun 23 08:28:28 2014 +0300
     1.2 +++ b/src/ggen.c	Mon Jun 23 10:33:24 2014 +0300
     1.3 @@ -20,8 +20,8 @@
     1.4  int gen_box(struct mesh *m)
     1.5  {
     1.6  	int i;
     1.7 -	int num_faces = 8;
     1.8 -	int num_verts = num_faces * 4;
     1.9 +	int num_faces = 12;
    1.10 +	int num_verts = num_faces * 3;
    1.11  	int32_t v[8][3] = {
    1.12  		{-X1, -X1, -X1}, {X1, -X1, -X1}, {X1, -X1, X1}, {-X1, -X1, X1},
    1.13  		{-X1, X1, -X1}, {X1, X1, -X1}, {X1, X1, X1}, {-X1, X1, X1}
    1.14 @@ -29,7 +29,7 @@
    1.15  	int32_t *vptr, *cptr;
    1.16  
    1.17  
    1.18 -	m->prim = X3D_QUADS;
    1.19 +	m->prim = X3D_TRIANGLES;
    1.20  	m->nverts = num_verts;
    1.21  	if(!(m->verts = malloc(num_verts * 3 * sizeof *m->verts))) {
    1.22  		return -1;
    1.23 @@ -45,43 +45,67 @@
    1.24  	VERTEX(v[0][0], v[0][1], v[0][2]);
    1.25  	VERTEX(v[1][0], v[1][1], v[1][2]);
    1.26  	VERTEX(v[2][0], v[2][1], v[2][2]);
    1.27 +	for(i=0; i<3; i++) COLOR(32768, 0, 32768);
    1.28 +
    1.29 +	VERTEX(v[0][0], v[0][1], v[0][2]);
    1.30 +	VERTEX(v[2][0], v[2][1], v[2][2]);
    1.31  	VERTEX(v[3][0], v[3][1], v[3][2]);
    1.32 -	for(i=0; i<4; i++) COLOR(65536, 0, 65536);
    1.33 +	for(i=0; i<3; i++) COLOR(65536, 0, 65536);
    1.34  
    1.35  	/* +Y */
    1.36 +	VERTEX(v[7][0], v[7][1], v[7][2]);
    1.37 +	VERTEX(v[6][0], v[6][1], v[6][2]);
    1.38 +	VERTEX(v[5][0], v[5][1], v[5][2]);
    1.39 +	for(i=0; i<3; i++) COLOR(0, 32768, 0);
    1.40 +
    1.41 +	VERTEX(v[7][0], v[7][1], v[7][2]);
    1.42 +	VERTEX(v[5][0], v[5][1], v[5][2]);
    1.43  	VERTEX(v[4][0], v[4][1], v[4][2]);
    1.44 -	VERTEX(v[5][0], v[5][1], v[5][2]);
    1.45 -	VERTEX(v[6][0], v[6][1], v[6][2]);
    1.46 -	VERTEX(v[7][0], v[7][1], v[7][2]);
    1.47 -	for(i=0; i<4; i++) COLOR(0, 65536, 0);
    1.48 +	for(i=0; i<3; i++) COLOR(0, 65536, 0);
    1.49  
    1.50  	/* -Z */
    1.51  	VERTEX(v[0][0], v[0][1], v[0][2]);
    1.52  	VERTEX(v[4][0], v[4][1], v[4][2]);
    1.53  	VERTEX(v[5][0], v[5][1], v[5][2]);
    1.54 +	for(i=0; i<3; i++) COLOR(32768, 32768, 0);
    1.55 +
    1.56 +	VERTEX(v[0][0], v[0][1], v[0][2]);
    1.57 +	VERTEX(v[5][0], v[5][1], v[5][2]);
    1.58  	VERTEX(v[1][0], v[1][1], v[1][2]);
    1.59 -	for(i=0; i<4; i++) COLOR(65536, 65536, 0);
    1.60 +	for(i=0; i<3; i++) COLOR(65536, 65536, 0);
    1.61  
    1.62  	/* +Z */
    1.63  	VERTEX(v[2][0], v[2][1], v[2][2]);
    1.64  	VERTEX(v[6][0], v[6][1], v[6][2]);
    1.65  	VERTEX(v[7][0], v[7][1], v[7][2]);
    1.66 +	for(i=0; i<3; i++) COLOR(0, 0, 32768);
    1.67 +
    1.68 +	VERTEX(v[2][0], v[2][1], v[2][2]);
    1.69 +	VERTEX(v[7][0], v[7][1], v[7][2]);
    1.70  	VERTEX(v[3][0], v[3][1], v[3][2]);
    1.71 -	for(i=0; i<4; i++) COLOR(0, 0, 65536);
    1.72 +	for(i=0; i<3; i++) COLOR(0, 0, 65536);
    1.73  
    1.74  	/* +X */
    1.75  	VERTEX(v[1][0], v[1][1], v[1][2]);
    1.76  	VERTEX(v[5][0], v[5][1], v[5][2]);
    1.77  	VERTEX(v[6][0], v[6][1], v[6][2]);
    1.78 +	for(i=0; i<3; i++) COLOR(32768, 0, 0);
    1.79 +
    1.80 +	VERTEX(v[1][0], v[1][1], v[1][2]);
    1.81 +	VERTEX(v[6][0], v[6][1], v[6][2]);
    1.82  	VERTEX(v[2][0], v[2][1], v[2][2]);
    1.83 -	for(i=0; i<4; i++) COLOR(65536, 0, 0);
    1.84 +	for(i=0; i<3; i++) COLOR(65536, 0, 0);
    1.85  
    1.86  	/* -X */
    1.87  	VERTEX(v[3][0], v[3][1], v[3][2]);
    1.88  	VERTEX(v[7][0], v[7][1], v[7][2]);
    1.89  	VERTEX(v[4][0], v[4][1], v[4][2]);
    1.90 +	for(i=0; i<3; i++) COLOR(0, 32768, 32768);
    1.91 +
    1.92 +	VERTEX(v[3][0], v[3][1], v[3][2]);
    1.93 +	VERTEX(v[4][0], v[4][1], v[4][2]);
    1.94  	VERTEX(v[0][0], v[0][1], v[0][2]);
    1.95 -	for(i=0; i<4; i++) COLOR(0, 65536, 65536);
    1.96 +	for(i=0; i<3; i++) COLOR(0, 65536, 65536);
    1.97  
    1.98  	return 0;
    1.99  }