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);