changeset 203:5c6c9667ac61

fix CreateSpan::run
author gongo@localhost.localdomain
date Mon, 26 Jan 2009 18:30:35 +0900
parents 3f4c6a75d7e0
children 3c632793eaf8
files TaskManager/Test/test_render/Camera.h TaskManager/Test/test_render/ChangeLog TaskManager/Test/test_render/Makefile.def TaskManager/Test/test_render/SceneGraph.cpp TaskManager/Test/test_render/SceneGraphRoot.cpp TaskManager/Test/test_render/ieshoot.cpp TaskManager/Test/test_render/spe/CreateSpan.cpp TaskManager/Test/test_render/spe/DrawSpan.cpp TaskManager/Test/test_render/task/CreatePolygonFromSceneGraph.cpp TaskManager/Test/test_render/viewer.cpp
diffstat 10 files changed, 58 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/Test/test_render/Camera.h	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/Camera.h	Mon Jan 26 18:30:35 2009 +0900
@@ -3,7 +3,7 @@
 
 class Camera : public SceneGraph {
 public:
-    Camera(void) {name = "Camera";}
+    Camera(void) {name = (const char*)"Camera";}
 };
 
 typedef Camera *CameraPtr;
--- a/TaskManager/Test/test_render/ChangeLog	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/ChangeLog	Mon Jan 26 18:30:35 2009 +0900
@@ -1,5 +1,24 @@
 2009-01-26  Wataru MIYAGUNI  <gongo@cr.ie.u-ryukyu.ac.jp>
 
+	* spe/CreateSpan.cpp (CreateSpan::run): fix
+	ポリゴンをx軸に水平に分割し、その二つを計算するってのが
+	half_triangelで、上としたで、何故か渡すテクスチャの情報が違う。
+	なんでだろうと思いつつも、今まで特に問題が出なかったから無視してたが、
+	今回、三つのSceneGraph を動かしてる時に問題発生。
+	それぞれ違うテクスチャを貼ってるのに、なぜかそれらのうちの半分が
+	別のテクスチャが貼られていた。簡単に言うと、A,B,C の SG があった。 
+
+	A: 正常
+	B: 右上だけ A のテクスチャ
+	C: 右上だけ A のテクスチャ
+
+	といった具合。わけがわからなかったんだが、
+	half_triangle に渡すやつの所為だと気づきました
+	なんでここだけ pp->tri[0].tex_info.addr とか渡してんのか未だに謎。
+	単なる書き間違いか直し間違いか。微妙なところ。
+	これ書いた後輩はもう居ない
+	
+
 	* SceneGraphIterator.cpp (SceneGraphIterator::hasNext)
 	(SceneGraphIterator::next): fix
 	検索する引数を int id に変更。
--- a/TaskManager/Test/test_render/Makefile.def	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/Makefile.def	Mon Jan 26 18:30:35 2009 +0900
@@ -3,16 +3,16 @@
 # include/library path
 # ex: macosx
 #CERIUM = /Users/gongo/Source/Concurrency/Game_project/Cerium
-CERIUM = /Users/gongo/Source/hg/Cerium
+#CERIUM = /Users/gongo/Source/hg/Cerium
 
 # ex: linux/ps3
-#CERIUM = /home/gongo/Cerium
+CERIUM = /home/gongo/Cerium
 #CERIUM = /Users/tkaito/hg/Game/Cerium
 
 #CERIUM = ../../..
 
 CC      = g++
-CFLAGS  = -O0 -g -Wall# -DDEBUG
+CFLAGS  = -O9 -g -Wall# -DDEBUG
 
 INCLUDE = -I$(CERIUM)/include/TaskManager -I.
 LIBS = -L$(CERIUM)/TaskManager
\ No newline at end of file
--- a/TaskManager/Test/test_render/SceneGraph.cpp	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/SceneGraph.cpp	Mon Jan 26 18:30:35 2009 +0900
@@ -119,6 +119,7 @@
     stack_angle[1] = 0.0f;
     stack_angle[2] = 0.0f;
 
+    size = 0;
     data = NULL;
 
     texture_id = -1;
@@ -435,31 +436,25 @@
 		list[id_count-1].scale_max = scale;
 
 		texture_id = id_count-1;
-		texture_info.t_w = texture_image->w;
-		texture_info.t_h = texture_image->h;
-		texture_info.pixels_orig = (Uint32*)texture_image->pixels;
-		texture_info.pixels = tapestry;
-		texture_info.scale_max = scale;
 
 		if (unlink(image_name))
 		{
 		    cout << "unlink error\n";
 		}
-
 	    } else {
 		/**
 		 * 以前に Load されている Texture を共用
 		 */
 		texture_id = tex_id;
-
-		// こんなことすると list[] のいみあるのかなーと
-		// 微妙に思う、自分で書き換えた感想 by gongo
-		texture_info.t_w = list[tex_id].t_w;
-		texture_info.t_h = list[tex_id].t_h;;
-		texture_info.pixels_orig = list[tex_id].pixels_orig;
-		texture_info.pixels = list[tex_id].pixels;
-		texture_info.scale_max = list[tex_id].scale_max;
 	    }
+ 
+	    // こんなことすると list[] のいみあるのかなーと
+	    // 微妙に思う、自分で書き換えた感想 by gongo
+	    texture_info.t_w = list[texture_id].t_w;
+	    texture_info.t_h = list[texture_id].t_h;;
+	    texture_info.pixels_orig = list[texture_id].pixels_orig;
+	    texture_info.pixels = list[texture_id].pixels;
+	    texture_info.scale_max = list[texture_id].scale_max;
 	}
     }
 }
--- a/TaskManager/Test/test_render/SceneGraphRoot.cpp	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/SceneGraphRoot.cpp	Mon Jan 26 18:30:35 2009 +0900
@@ -117,18 +117,22 @@
     /* ユーザーにはオリジナルの clone を返す */
     p = src->clone();
     p->sgid = id;
-    p->flag_drawable = 1;
 
     addNext(p);
 
     return p;
 }
 
+/**
+ * 何も表示しない、move,collision もしない SceneGraph を生成
+ * いずれ、Transform3D 的なものに回す予定
+ */
 SceneGraphPtr
 SceneGraphRoot::createSceneGraph(void)
 {
     SceneGraphPtr p = new SceneGraph;
     addNext(p);
+    p->flag_drawable = 0;
     return p;
 }
 
--- a/TaskManager/Test/test_render/ieshoot.cpp	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/ieshoot.cpp	Mon Jan 26 18:30:35 2009 +0900
@@ -137,20 +137,20 @@
     SceneGraphPtr enemy;
     SceneGraphPtr back;
 
-    sgroot->createFromXMLfile("xml_file/iejiki.xml");
     sgroot->createFromXMLfile("xml_file/ietama.xml");
     sgroot->createFromXMLfile("xml_file/ieboss.xml");
+    sgroot->createFromXMLfile("xml_file/iejiki.xml");
+
+    back = sgroot->createSceneGraph();
 
     iejiki = sgroot->createSceneGraph(IEJIKI);
     iejiki->set_move_collision(iejiki_move, iejiki_collision);
+    //iejiki->flag_drawable = 0;
+    back->addChild(iejiki);
 
     enemy = sgroot->createSceneGraph(IEBOSS);
     enemy->set_move_collision(ieboss_move, ieboss_collision);
     enemy->xyz[1] = boss_radius_y;
-
-    back = sgroot->createSceneGraph();
-
-    back->addChild(iejiki);
     back->addChild(enemy);
 
     sgroot->setSceneData(back);
--- a/TaskManager/Test/test_render/spe/CreateSpan.cpp	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/spe/CreateSpan.cpp	Mon Jan 26 18:30:35 2009 +0900
@@ -385,10 +385,13 @@
 			     (int)(span->tex_width*tex_x_len),
 			     (int)(span->tex_height*tex_y_len), tex_scale_max);
 
-	//scale = (8 > tex_scale_max) ? tex_scale_max : 8;
+	//scale = (scale > tex_scale_max) ? tex_scale_max : 8;
 	
 	uint32 *tapestry = getTapestry(tex_width, tex_height, scale, tex_addr);
 
+	//printf("%p = getTapestry(%d, %d, %d, %p)\n", tapestry,
+	//tex_width, tex_height, scale, tex_addr);
+
 	span->tex_addr   = tapestry;
 	span->tex_width  = tex_width/scale;
 	span->tex_height = tex_height/scale;
@@ -495,10 +498,17 @@
 			  triPack->tex_info.scale_max, vMin, vMid, vMid10,
 			  (int)(vMax->y - vMin->y), vMax->tex_y - vMin->tex_y);
 	    half_triangle(spackList, charge_y_top, charge_y_end,
+#if 0
 			  pp->tri[0].tex_info.addr,
 			  pp->tri[0].tex_info.width,
 			  pp->tri[0].tex_info.height,
 			  pp->tri[0].tex_info.scale_max, vMax, vMid, vMid10,
+#else
+			  triPack->tex_info.addr,
+			  triPack->tex_info.width,
+			  triPack->tex_info.height,
+			  triPack->tex_info.scale_max, vMax, vMid, vMid10,
+#endif
 			  (int)(vMax->y - vMin->y), vMax->tex_y - vMin->tex_y);
 	}
 
--- a/TaskManager/Test/test_render/spe/DrawSpan.cpp	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/spe/DrawSpan.cpp	Mon Jan 26 18:30:35 2009 +0900
@@ -269,7 +269,7 @@
 
     // y の範囲
     int rangey = smanager->get_param(4);
-    
+
     hash = (TileHashPtr)smanager->global_get(GLOBAL_TEXTURE_HASH);
     tileList = (TileListPtr)smanager->global_get(GLOBAL_TILE_LIST);
 
@@ -570,7 +570,6 @@
 	    }
 	}
 
-
 	smanager->dma_wait(SPAN_PACK_LOAD);
 
 	SpanPackPtr tmp_spack = spack;
--- a/TaskManager/Test/test_render/task/CreatePolygonFromSceneGraph.cpp	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/task/CreatePolygonFromSceneGraph.cpp	Mon Jan 26 18:30:35 2009 +0900
@@ -136,9 +136,9 @@
 		rotate(xyz2, sg->matrix);
 		rotate(xyz3, sg->matrix);
 
-		apply_matrix(xyz1, mat);
-		apply_matrix(xyz2, mat);
-		apply_matrix(xyz3, mat);
+		//apply_matrix(xyz1, mat);
+		//apply_matrix(xyz2, mat);
+		//apply_matrix(xyz3, mat);
 		
 		triangle->ver1.x = xyz1[0];
 		triangle->ver1.y = xyz1[1];
--- a/TaskManager/Test/test_render/viewer.cpp	Mon Jan 26 16:58:35 2009 +0900
+++ b/TaskManager/Test/test_render/viewer.cpp	Mon Jan 26 18:30:35 2009 +0900
@@ -340,7 +340,7 @@
 		}
 #else
 		memset(&pixels[(startx-1)+this->width*(starty-1)],
-		       0x00, (this->width)*sizeof(int)*rangey);
+		       0xFF, (this->width)*sizeof(int)*rangey);
 		break;
 #endif
 	    }