Mercurial > hg > Game > Cerium
diff Renderer/Engine/SceneGraph.cc @ 906:becd6fad3ae0 draft
coord_pack is stuffed with infomation of create polygon at spe.
author | Yutaka_Kinjyo |
---|---|
date | Mon, 19 Jul 2010 23:40:53 +0900 |
parents | 5e4962b28ceb |
children | a4ed11e66fbf |
line wrap: on
line diff
--- a/Renderer/Engine/SceneGraph.cc Sat Jul 17 15:09:48 2010 +0900 +++ b/Renderer/Engine/SceneGraph.cc Mon Jul 19 23:40:53 2010 +0900 @@ -151,33 +151,22 @@ //data = new float[size*3*3]; #if SPE_CREATE_POLYGON - - /* CreatePolygon を spe 側でやるために。 - size は頂点の数。speに渡す場合には、16の倍数にして - 16Kbyte以上の場合、16Kbyte毎に分割できるようにしなければならない。 - CreatePolygonFromSceneGraphTaskをspeで動かすために、speに渡すのは - TrianglePackでよい。 - polygon_pack 1つには triangle が 128 になってる。polygon_pack の - triangle 数に合わせる方が楽だよね。なんか変な気もするけど、polygon - クラスにもTrianglePackを持たす。SceneGraph は自分の polygon 数が入る - 分だけ、TrianglePackを持つ。CreatePolygonTask にはSceneGraph 側の - TrianglePack を input に、polygon_pack の TriganlePack を output とする - */ - - int tri_pack_size = sizeof(TrianglePack)*(size/3); - printf("tri_pack_size %d\n", tri_pack_size); - tri_pack = (TrianglePackPtr)manager->allocate(tri_pack_size); - texture_info = (texture_list*)manager->allocate(sizeof(texture_list)); - sg_matrix = (float*)manager->allocate(sizeof(float)*32); - matrix = sg_matrix; - real_matrix = sg_matrix + 16; - + + coord_pack_size = sizeof(float)*8*size*3; + coord_pack = (flaat*)manager->allocate(coord_pack_size); + #else coord_xyz = (float*)manager->allocate(sizeof(float)*size*3); coord_tex = (float*)manager->allocate(sizeof(float)*size*3); normal = (float*)manager->allocate(sizeof(float)*size*3); + coord_pack_size = sizeof(float)*8*size*3; // coord_pack_vertex size is 32byte. vertex num 3. + coord_pack = (float*)manager->allocate(coord_pack_size); + + int sg_matrix_size = 32; // matrix 16 + real_matrix 32. + sg_matrix = (float*)manager->allocate(sg_matrix_size); + #endif get_data(manager, surface->children);