Mercurial > hg > Members > kono > Cerium
diff Renderer/Engine/viewer.cc @ 793:c260205d3185
add light switch api
author | yutaka@localhost.localdomain |
---|---|
date | Mon, 03 May 2010 05:09:58 +0900 |
parents | f2497e0ecd7c |
children | 496a8159e840 |
line wrap: on
line diff
--- a/Renderer/Engine/viewer.cc Sun May 02 04:17:34 2010 +0900 +++ b/Renderer/Engine/viewer.cc Mon May 03 05:09:58 2010 +0900 @@ -113,7 +113,6 @@ light_xyz_stock = (float *)manager->allocate(size); light_xyz = (float *)manager->allocate(size); - for (int i = 0; i < light_size ; i++) { light_xyz[i] = 0.0f; } @@ -128,6 +127,7 @@ size = light_num * sizeof(int); light_switch = (int*)manager->allocate(size); + for (int i = 0; i < light_num; i++) { light_switch[i] = 0; } @@ -142,6 +142,12 @@ size = 16; // LightSysSwitch は 4byte. 残り 12byte は DMA転送の為のパディング + light_sysswitch = (int*)manager->allocate(size); + + for (int i = 0; i < size / sizeof(int); i++) { + light_sysswitch[i] = 0; + } + for(int i = 0; i < spe_num; i++) { HTaskPtr data_load = manager->create_task(DataLoad); data_load->set_param(0,(memaddr)size); @@ -324,6 +330,7 @@ sgroot->allExecute(width, height); light_xyz_stock = sgroot->getLightVector(); light_switch_stock = sgroot->getLightSwitch(); + light_sysswitch_stock = sgroot->getLightSysSwitch(); //sgroot->checkRemove(); // ここから下は Rendering という関数にする @@ -513,7 +520,7 @@ //Light info update - HTaskPtr data_update; + //HTaskPtr data_update; HTaskPtr data_update_wait; int light_num = 4; int size = sizeof(float)*4*light_num; //xyz+alpha(4) * light_num(4) @@ -526,6 +533,8 @@ for (int i = 0; i < light_num; i++) { light_switch[i] = light_switch_stock[i]; } + + light_sysswitch[0] = light_sysswitch_stock; data_update_wait = manager->create_task(DataUpdate); data_update_wait->add_inData(light_xyz,size); @@ -540,13 +549,13 @@ size = light_num * sizeof(int); for (int i = 0; i < spe_num; i++) { - update_task_create(light_xyz,size,LightSwitch,(int)SPE_0+i,data_update_wait); + update_task_create(light_switch,size,LightSwitch,(int)SPE_0+i,data_update_wait); } size = 16; // LightSysSwitch は 4byte. 残り 12byte は DMA転送の為のパディング for (int i = 0; i < spe_num; i++) { - update_task_create(light_xyz,size,LightSysSwitch,(int)SPE_0+i,data_update_wait); + update_task_create(light_sysswitch,size,LightSysSwitch,(int)SPE_0+i,data_update_wait); }