# HG changeset patch # User gongo@localhost.localdomain # Date 1232962235 -32400 # Node ID 5c6c9667ac61db9e3414d287d10d386086c4ed25 # Parent 3f4c6a75d7e0229457c53928c430a644a3116a47 fix CreateSpan::run diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/Camera.h --- 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; diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/ChangeLog --- 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 + * 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 に変更。 diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/Makefile.def --- 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 diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/SceneGraph.cpp --- 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; } } } diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/SceneGraphRoot.cpp --- 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; } diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/ieshoot.cpp --- 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); diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/spe/CreateSpan.cpp --- 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); } diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/spe/DrawSpan.cpp --- 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; diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/task/CreatePolygonFromSceneGraph.cpp --- 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]; diff -r 3f4c6a75d7e0 -r 5c6c9667ac61 TaskManager/Test/test_render/viewer.cpp --- 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 }