diff Renderer/Engine/viewer.cc @ 509:8148c81d2660

Cerium Rendering Library
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 12 Oct 2009 10:17:09 +0900
parents 735f76483bb2
children 97e1b0346597
line wrap: on
line diff
--- a/Renderer/Engine/viewer.cc	Mon Oct 12 09:43:07 2009 +0900
+++ b/Renderer/Engine/viewer.cc	Mon Oct 12 10:17:09 2009 +0900
@@ -90,25 +90,9 @@
     SDL_GL_SwapBuffers();
 }
 
-extern void node_init(TaskManager *manager);
-extern void create_cube_split(TaskManager *manager, int);
-extern void panel_init(TaskManager *manager, int bg);
-extern void universe_init(TaskManager *manager);
-extern void ieshoot_init(TaskManager *manager);
-extern void ball_bound_init(TaskManager *manager, int, int);
-extern void lcube_init(TaskManager *manager, int, int);
-extern void direction_init(TaskManager *manager);
-extern void init_position(TaskManager *manager, int, int);
-extern void vacuum_init(TaskManager *manager, int w, int h);
-extern void untitled_init(TaskManager *manager);
-extern void chain_init(TaskManager *manager, int w, int h);
-extern void chain_old_init(TaskManager *manager, int w, int h);
-extern void boss1_init(TaskManager *manager, int w, int h);
-extern void init_gaplant(TaskManager *manager, int w, int h);
-extern void vacuum_init2(TaskManager *manager, int w, int h);
 
 void
-Viewer::run_init(TaskManager *manager, const char *xml, int sg_number)
+Viewer::run_init(TaskManager *manager, Application *app)
 {
     this->manager = manager;
 
@@ -117,65 +101,8 @@
     frames     = 0;
 
     sgroot = new SceneGraphRoot(this->width, this->height);
-//    sgroot_2 = new SceneGraphRoot(this->width, this->height);
-    //sgroot->createFromXMLFile(xml);
-    // ここの switch は application->init(this, manager, sg_no); になるべき
-    switch (sg_number) {
-    case 0:
-    case 1:
-		create_cube_split(manager, sg_number);
-        break;
-    case 2:
-    case 3:
-    case 4:
-		panel_init(manager, sg_number);
-        break;
-    case 5:
-		universe_init(manager);
-        break;
-    case 6:
-		ieshoot_init(manager);
-        break;
-    case 7:
-		ball_bound_init(manager, this->width, this->height);
-        break;
-    case 8:
-		lcube_init(manager, this->width, this->height);
-        break;
-    case 9:
-		direction_init(manager);
-        break;
-    case 10:
-		init_position(manager, this->width, this->height);
-        break;
-    case 11:
-        //        vacuum_init(manager, this->width, this->height);
-        break;
-    case 12:
-		untitled_init(manager);
-        break;
-    case 13:
-		boss1_init(manager, this->width, this->height);
-        break;
-    case 14:
-		init_gaplant(manager, this->width, this->height);
-        break;
-    case 15:
-		vacuum_init2(manager, this->width, this->height);
-        break;
-    case 16:
-		app = new Chain();
-        app->init(manager, this->width, this->height);
-		speLoop();
-		return;
-        break;
-    case 17:
-        chain_old_init(manager, this->width, this->height);
-		break;
-    default:
-        node_init(manager);
-        break;
-    }   
+
+    app->init(manager, this->width, this->height);
 
     mainLoop();
 }
@@ -398,56 +325,7 @@
 void 
 Viewer::rendering(HTaskPtr task_next)
 {
-#if 0
-    HTaskPtr task_create_pp = manager->create_task(TASK_CREATE_PP2);
-    
-    // SceneGraph(木構造) -> PolygonPack
-
-    task_create_pp->add_param((uint32)sgroot->getDrawSceneGraph());
-    task_create_pp->add_param((uint32)ppack);
-
-    task_next->wait_for(task_create_pp);
-    
-    int range_base = spe_num;
-    // 切り上げのつもり
-    int range = (spackList_length + range_base - 1) / range_base;
-
-    for (int i = 0; i < range_base; i++) {
-        int index_start = range*i;
-        int index_end = (index_start + range >= spackList_length)
-            ? spackList_length : index_start + range;
-
-		HTaskPtr task_create_sp = manager->create_task(TASK_CREATE_SPAN);
-        task_create_sp->add_inData(ppack, sizeof(PolygonPack));
-        task_create_sp->add_inData(spackList_ptr,
-                                   sizeof(SpanPack*)*spackList_length_align);
-        task_create_sp->add_inData(&spackList[index_start], sizeof(SpanPack));
-
-        task_create_sp->add_param(index_start);
-	
-        /**
-         * ex. screen_height が 480, spenum が 6 の場合、各SPEのy担当範囲
-         *   [  1.. 80] [ 81..160] [161..240]
-         *   [241..320] [321..400] [401..480]
-         *
-         * ex. screen_height が 1080, spenum が 5 の場合、
-         *   [  1..216] [217..432] [433..648]
-         *   [649..864] [865..1080]
-         */
-        task_create_sp->add_param(index_start*split_screen_h + 1);
-        task_create_sp->add_param(index_end*split_screen_h);
-
-        task_next->wait_for(task_create_sp);
-        task_create_sp->wait_for(task_create_pp);
-
-        task_create_sp->set_cpu(SPE_ANY);
-        task_create_sp->spawn();
-    }
-
-    task_create_pp->spawn();
-#else
     common_rendering(task_next);
-#endif
     
     // Barrier 同期
     // run_draw() を呼ぶ post2runDraw
@@ -504,59 +382,7 @@
 void
 Viewer::run_draw(HTaskPtr task_next) // 引数に post2runLoop を入れるようにする
 {
-#if 0
-    HTaskPtr task_draw;
-
-    //task_next = manager->create_task(TASK_DUMMY);
-    //task_next->set_post(post2runLoop, (void*)this);
-
-    ppack->clear();
-    for (int i = 0; i < spackList_length; i++) {
-        SpanPack *spack = &spackList[i];
-        int startx = 1;
-        int endx = split_screen_w;
-
-        int starty = spack->info.y_top - split_screen_h + 1;
-        //int endy = spack->info.y_top;
-        int rangey = (starty + split_screen_h - 1 > this->height)
-            ? this->height - starty + 1 : split_screen_h;
-
-        while (startx < this->width) {
-            if (spack->info.size > 0) {
-                // Draw SpanPack
-                task_draw = manager->create_task(TASK_DRAW_SPAN);
-                task_draw->add_inData(spack, sizeof(SpanPack));
-
-                task_draw->add_param(
-                    (uint32)&pixels[(startx-1) + this->width*(starty-1)]);
-                task_draw->add_param(this->width);
-            } else {
-		// 7.7.3 SL1 Data Cache Range Set to Zero コマンド
-		//  を使って、DMAでclearするべき... ということは、
-		// それもSPEでやる方が良い?
-                memset(&pixels[(startx-1)+this->width*(starty-1)],
-                       0, (this->width)*sizeof(int)*rangey);
-				break;
-            }
-
-            task_draw->add_param(startx);
-            task_draw->add_param(endx);
-            task_draw->add_param(rangey);
-            task_draw->set_cpu(SPE_ANY);
-            task_next->wait_for(task_draw);
-            task_draw->spawn();
-
-            startx += split_screen_w;
-            endx += split_screen_w;
-
-            if (endx > this->width) {
-                endx = this->width;
-            }
-        }
-    }
-#else    
     common_draw(task_next);
-#endif
 
     task_next->set_post(post2runLoop, (void*)this); // set_post(function(this->run_loop()), NULL)
     task_next->spawn();