Mercurial > hg > Members > kono > Cerium
diff Renderer/Engine/polygon.cc @ 860:649e4cb84683
Still on the way
author | yutaka@localhost.localdomain |
---|---|
date | Fri, 18 Jun 2010 01:30:06 +0900 |
parents | 735f76483bb2 |
children | 000a8b63ad9a |
line wrap: on
line diff
--- a/Renderer/Engine/polygon.cc Thu Jun 17 04:46:25 2010 +0900 +++ b/Renderer/Engine/polygon.cc Fri Jun 18 01:30:06 2010 +0900 @@ -177,6 +177,36 @@ void Polygon::pickup_coordinate(char *cont) { + +#if SPE_CREATE_POLYGON + + TrianglePackPtr cur = tri_pack; + + for(int n=0; n<size; n+=3) + { + + cont = pickup_float(cont, &cur->ver1.x); + cont = pickup_float(cont, &cur->ver1.y); + cont = pickup_float(cont, &cur->ver1.z); + + cont = pickup_float(cont, &cur->ver2.x); + cont = pickup_float(cont, &cur->ver2.y); + cont = pickup_float(cont, &cur->ver2.z); + + cont = pickup_float(cont, &cur->ver3.x); + cont = pickup_float(cont, &cur->ver3.y); + cont = pickup_float(cont, &cur->ver3.z); + + cur = cur + 1; + + if (cont == NULL) + { + cout << "Analyzing obj data failed coordinate\n"; + } + } + +#else + for(int n=0; n<size*3; n+=3) { cont = pickup_float(cont, coord_xyz+n); @@ -188,10 +218,44 @@ cout << "Analyzing obj data failed coordinate\n"; } } + +#endif + } void Polygon::pickup_normal(char *cont) { + +#if SPE_CREATE_POLYGON + + TrianglePackPtr cur = tri_pack; + + for(int n=0; n<size; n+=3) + { + + cont = pickup_float(cont, &cur->normal1.x); + cont = pickup_float(cont, &cur->normal1.y); + cont = pickup_float(cont, &cur->normal1.z); + + cont = pickup_float(cont, &cur->normal2.x); + cont = pickup_float(cont, &cur->normal2.y); + cont = pickup_float(cont, &cur->normal2.z); + + cont = pickup_float(cont, &cur->normal3.x); + cont = pickup_float(cont, &cur->normal3.y); + cont = pickup_float(cont, &cur->normal3.z); + + cur = cur + 1; + + if (cont == NULL) + { + cout << "Analyzing obj data failed coordinate\n"; + } + } + +#else + + for (int n = 0; n<size*3; n += 3) { cont = pickup_float(cont, normal+n); @@ -203,6 +267,9 @@ cout << "Analyzing obj data failed normal\n"; } } + +#endif + } void Polygon::pickup_model(char *cont) @@ -219,6 +286,33 @@ void Polygon::pickup_texture(char *cont) { + +#if SPE_CREATE_POLYGON + + TrianglePackPtr cur = tri_pack; + + for(int n=0; n<size; n+=3) + { + + cont = pickup_float(cont, &cur->ver1.tex_x); + cont = pickup_float(cont, &cur->ver1.tex_y); + + cont = pickup_float(cont, &cur->ver2.tex_x); + cont = pickup_float(cont, &cur->ver2.tex_y); + + cont = pickup_float(cont, &cur->ver3.tex_x); + cont = pickup_float(cont, &cur->ver3.tex_y); + + cur = cur + 1; + + if (cont == NULL) + { + cout << "Analyzing obj data failed coordinate\n"; + } + } + +#else + for (int n = 0; n < size*3; n += 3) { cont = pickup_float(cont, coord_tex+n); @@ -230,6 +324,9 @@ cout << "Analyzing obj data failed texture\n"; } } + +#endif + } char *get_pixel(int tx, int ty, SDL_Surface *texture_image)