comparison Renderer/Engine/viewer.cc @ 1028:3191cae6f7a2

spe/CreatePolygonFromSceneGraph not done.
author tkaito@henri
date Mon, 08 Nov 2010 19:01:25 +0900
parents 55f3c5976959
children a0faa0cfc271
comparison
equal deleted inserted replaced
1027:11dee6cf7116 1028:3191cae6f7a2
660 } 660 }
661 return sg_count; 661 return sg_count;
662 } 662 }
663 663
664 void 664 void
665 create_pp_task(SceneGraphPtr sg, TaskManager *manager, int spe_num, HTaskPtr task_next) 665 create_pp_task(SceneGraphPtr sg, TaskManager *manager, int spe_num, HTaskPtr task_next, SceneGraphRootPtr sgroot)
666 { 666 {
667 667
668 /* 668 /*
669 * SceneGraph を辿って coord_xyz, coord_tex, normal, matrix, real_matrix 及び、 669 * SceneGraph を辿って coord_xyz, coord_tex, normal, matrix, real_matrix 及び、
670 * PolygonPack の TrianglePack (空) を送る。pp->info.size の計算もここで。 670 * PolygonPack の TrianglePack (空) を送る。pp->info.size の計算もここで。
671 * 671 *
672 */ 672 */
673 //int spe_num = 6;
674
675 PolygonPackPtr pp = (PolygonPackPtr)manager->allocate(sizeof(PolygonPack));
676 673
677 int sg_num = sg_drawable_num(sg); 674 int sg_num = sg_drawable_num(sg);
678 int sg_division = sg_num / spe_num; 675 int sg_division = sg_num / spe_num;
679 int residue = sg_num % spe_num; 676 int residue = sg_num % spe_num;
680 677
688 685
689 task_array[spe_num] = manager->create_task_array(CreatePolygonFromSceneGraph, 686 task_array[spe_num] = manager->create_task_array(CreatePolygonFromSceneGraph,
690 sg_division+residue,4,6,1); 687 sg_division+residue,4,6,1);
691 pptask[spe_num] = 0; 688 pptask[spe_num] = 0;
692 689
693 //int count= 0;
694 int k = 0; 690 int k = 0;
695 691
696 while (sg) { 692 while (sg) {
697 if (sg->flag_drawable) { 693 if (sg->flag_drawable) {
698 if(count < spe_num * sg_division) { 694 if(k < spe_num * sg_division) {
699 k %= spe_num-1; 695 k %= spe_num-1;
700 } else { 696 } else {
701 k = spe_num; 697 k = spe_num;
702 } 698 }
703 pptask[k] = task_array[k]->next_task_array(CreatePolygonFromSceneGraph,pptask[k]); 699 pptask[k] = task_array[k]->next_task_array(CreatePolygonFromSceneGraph,pptask[k]);
711 pptask[k]->set_param(0,(memaddr)sg->size); 707 pptask[k]->set_param(0,(memaddr)sg->size);
712 pptask[k]->set_param(1,(memaddr)sg->texture_info.t_w); 708 pptask[k]->set_param(1,(memaddr)sg->texture_info.t_w);
713 pptask[k]->set_param(2,(memaddr)sg->texture_info.t_h); 709 pptask[k]->set_param(2,(memaddr)sg->texture_info.t_h);
714 pptask[k]->set_param(3,(memaddr)sg->texture_info.scale_max); 710 pptask[k]->set_param(3,(memaddr)sg->texture_info.scale_max);
715 711
716 //pptask[k]->set_outData(0, &pp->tri[pp->info.size++], sizeof(TrianglePack));
717 } 712 }
718 if (sg->children != NULL) { 713 if (sg->children != NULL) {
719 sg = sg->children; 714 sg = sg->children;
720 } else if (sg->brother != NULL) { 715 } else if (sg->brother != NULL) {
721 sg = sg->brother; 716 sg = sg->brother;
740 task_array[k]->spawn_task_array(pptask[k]->next()); 735 task_array[k]->spawn_task_array(pptask[k]->next());
741 task_array[k]->set_cpu(SPE_ANY); 736 task_array[k]->set_cpu(SPE_ANY);
742 task_array[k]->spawn(); 737 task_array[k]->spawn();
743 if (sgroot->gtask_array != NULL) { 738 if (sgroot->gtask_array != NULL) {
744 HTaskPtr game_task_array = sgroot->gtask_array->get_task_array(); 739 HTaskPtr game_task_array = sgroot->gtask_array->get_task_array();
745 task_create_pp->wait_for(game_task_array); 740 task_array[k]->wait_for(game_task_array);
746 } 741 }
747 task_next->wait_for(task_create_pp); 742 task_next->wait_for(task_array[k]);
748 } 743 }
749 } 744 }
750 745
751 void 746 void
752 Viewer::common_rendering(HTaskPtr task_next, SceneGraphRoot *sgroot) 747 Viewer::common_rendering(HTaskPtr task_next, SceneGraphRoot *sgroot)
754 749
755 #if SPE_CREATE_POLYGON 750 #if SPE_CREATE_POLYGON
756 751
757 SceneGraphPtr sg = sgroot->getDrawSceneGraph(); 752 SceneGraphPtr sg = sgroot->getDrawSceneGraph();
758 753
759 create_pp_task(sg, manager, spe_num, task_next); 754 create_pp_task(sg, manager, spe_num, task_next, sgroot);
760 755
761 #if SPE_CREATE_POLYGON_CHECK 756 #if SPE_CREATE_POLYGON_CHECK
762 check_matrix(matrix_info,sg); 757 check_matrix(matrix_info,sg);
763 #endif 758 #endif
764 759