# HG changeset patch # User Yutaka_Kinjyo # Date 1279550453 -32400 # Node ID 348b48db317ef0d6e103ad14e41a88ad462b5217 # Parent e622f27c280832d8582c6ccfdd484270a50a9be1 coord_pack is stuffed with infomation of create polygon at spe. diff -r e622f27c2808 -r 348b48db317e Renderer/Engine/Makefile.def --- a/Renderer/Engine/Makefile.def Sat Jul 17 15:09:48 2010 +0900 +++ b/Renderer/Engine/Makefile.def Mon Jul 19 23:40:53 2010 +0900 @@ -5,7 +5,7 @@ ABIBIT = 32 ABI = -m$(ABIBIT) CC = g++ -OPT = -g -O9 # -DSPE_CREATE_POLYGON=1 +OPT = -g -O9 -DSPE_CREATE_POLYGON_CHECK #-DSPE_CREATE_POLYGON=1 CFLAGS = -g -Wall $(ABI) $(OPT) # -DDEBUG INCLUDE = -I$(CERIUM)/include/TaskManager -I. diff -r e622f27c2808 -r 348b48db317e Renderer/Engine/SceneGraph.cc --- 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); diff -r e622f27c2808 -r 348b48db317e Renderer/Engine/polygon.cc --- a/Renderer/Engine/polygon.cc Sat Jul 17 15:09:48 2010 +0900 +++ b/Renderer/Engine/polygon.cc Mon Jul 19 23:40:53 2010 +0900 @@ -219,18 +219,56 @@ #else + char *tmp_cont = cont; + int bound = 8; // coord_vertex size is 8byte. + int offset = 0; + for(int n=0; n