annotate Renderer/Engine/ChangeLog @ 618:360032cc500e

worked. Cell fix. (not yet tested)
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Nov 2009 21:17:02 +0900
parents 735f76483bb2
children c7b5c99252ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
618
360032cc500e worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 507
diff changeset
1 2009-11-14 Shinji Kono <kono@ie.u-ryukyu.ac.jp>
360032cc500e worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 507
diff changeset
2
360032cc500e worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 507
diff changeset
3 DrawSpan の dma_write を追放。なんでこんなになっていたかは謎。
360032cc500e worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 507
diff changeset
4
360032cc500e worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 507
diff changeset
5 これで、renew Task を落とせます。
360032cc500e worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 507
diff changeset
6
507
735f76483bb2 Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 283
diff changeset
7 2009-08-06 Shinji Kono <kono@ie.u-ryukyu.ac.jp>
735f76483bb2 Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 283
diff changeset
8
735f76483bb2 Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 283
diff changeset
9 DrawSpan の reboot/ TASK_DRAW_SPAN2 は、使ってないのね。
735f76483bb2 Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 283
diff changeset
10
735f76483bb2 Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 283
diff changeset
11
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
12 2009-03-29 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
13
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
14 * Makefile
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
15 SGlist.{cpp,h} を make clean で消去し、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
16 make で自動生成するようにしました。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
17 けどなんか他のファイルと同じ書きかたしても
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
18 上手く行かなかった。何か見落としてるかもしれない。誰か直(ry
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
19
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
20 2009-02-12 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
21
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
22 * task/CreatePolygonFromSceneGraph.cpp (CreatePolygonFromSceneGraph::run): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
23 下にあわせる様に
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
24
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
25 * SceneGraph.cpp (SceneGraph::SceneGraph, SceneGraph::init)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
26 (SceneGraph::finalize_original): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
27 今まで、Polygon が持つ vertex, normal, texture coordinate ってのが
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
28
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
29 ---------------------------------------
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
30 data = | vertex | normal | texture | sizeof(data) = size*3
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
31 ---------------------------------------
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
32 \ size / \ size / \ size /
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
33
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
34 てな感じで、SceneGraph->data の中に 3 つ入ってたわけです。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
35 これだと、アクセスする時にどれがどれかわからんくなるし、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
36 ソース読む時に迷う(経験談)ので、data を消して、代わりに
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
37 coord_xyz, normal, coord_tex を作りました。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
38
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
39 * polygon.cpp (Polygon::pickup_coordinate)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
40 (Polygon::pickup_normal, Polygon::pickup_texture):
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
41
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
42 2009-02-10 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
43
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
44 * Makefile.macosx (depend): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
45 depend.inc とかを吐き出す様にしました
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
46
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
47 * Camera.cpp (Camera::Camera, Camera::updateView)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
48 (Camera::updatePerspective, Camera::updateScreen)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
49 (Camera::update): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
50 なんとかカメラできてるっぽいです。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
51 Perspective とかも聞いてるし、中心に向かって遠くなってる。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
52 あとは行列演算をもうちょいこぎれいにすればいい感じかなー。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
53
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
54 残りは、ユーザ側からの設定。例えば
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
55 1. 車の運転席目線(FPS)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
56 2. 車の後ろから(TPS)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
57 3. 車の前から(SPS)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
58
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
59 的なのを、ユーザが CameraData みたいな構造体に
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
60 zd とか yd とかを設定して camera->set(data) とかやれば
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
61 反映するみたいな!みたいな!
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
62
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
63 2009-02-09 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
64
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
65 * SceneGraphRoot.cpp (SceneGraphRoot::allExecute)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
66 (SceneGraphRoot): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
67 SceneGraph を root から走査していきながら
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
68 その都度コピーしていき、最終的に全体の新しい SceneGraph ができる。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
69 削除されていればコピーしない、っていうのは簡単だけど
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
70 追加された場合、コピー元に追加されるのは困るので
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
71 コピーしたやつに追加って形にしたら今のコードになった。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
72 めんどくさいっちゃめんどくさい。もっと綺麗な書き方あるかね
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
73
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
74
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
75 2009-02-01 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
76
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
77 * SceneGraph.cpp (SceneGraph::SceneGraph)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
78 (SceneGraph::SceneGraph, SceneGraph::SceneGraph)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
79 (SceneGraph::finalize_original, SceneGraph)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
80 (SceneGraph::finalize_copy): add, fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
81 今のところ、SceneGraph の作られ方は
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
82
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
83 a1. xml ファイルから生成 (sgid 毎、sg_src[] に格納)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
84 a2. ID を指定し、sg_src[id] の SceneGraph を複製
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
85 a3. xml も ID も指定しない、何も表示しない SceneGraph
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
86
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
87 a1 の時はポリゴンデータ(data[])を生成するわけだけど、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
88 a2 でも、オリジナルと同じ data[] を持つ必要は(今は)ない。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
89 なので、a2 の場合、data[] は a1 と同じ場所を指せば良い。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
90 しかし、今までは、SceneGraph::~SceneGraph では
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
91 どんな SceneGraph でも
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
92
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
93 delete [] data;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
94
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
95 とかやってたので、それならということで
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
96
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
97 b1. a1 用の、Desturctor で data[] を delete する finalize_original()
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
98 b2. a2,a3 用の、data[] を削除しない finalize_copy()
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
99
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
100 を用意し、a1,a2,a3 の Consturoctor で、どっちかを設定する。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
101
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
102 2009-01-30 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
103
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
104 * spe/DrawSpan.cpp (DrawSpan::drawDot1): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
105 span->length_x == 1 の処理。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
106
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
107 (DrawSpan::drawDot2): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
108 Dot1 の続き。要は Dot1 で load して、Dot2 で wait->書き込みって感じ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
109 しかし、1ドットだとそこまで待つ必要もないかなって感じなので
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
110 今は Dot 2には何も書いてない。ちゃんとしらべて、必要そうだったら
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
111 ここで書き込みを行う
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
112
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
113 (DrawSpan::drawLine1): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
114 span->length_x > 1 の処理。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
115 いくつか Load パターンを考えてる途中
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
116
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
117 1. 全部 load
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
118 1. z buf で描きこむと判断したとき、その pixel の texture tile を
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
119 load する。(すでにある、ないに関わらず。ある場合は、実際には
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
120 Load の処理は行われないが)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
121 2. Line2 で描画する(ここで使う tile はすでに全部読み込まれてるとする
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
122
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
123 2. 無い物だけload
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
124 1. 書き込むと判断したとき、tile があるかどうかを調べ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
125 あればそのまま linebuf に、無ければ load を掛けて continue;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
126 このとき、load した(つまりまだ書き込まれてない) 場所を覚えておく
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
127 2. Line2 で、1. で覚えた場所から再び計算して描画する。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
128 tile はすでに全部読み込まれているとする
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
129
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
130 まだあったけど忘れた。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
131 今のところ描画領域が 256x8、もしくは512x8 で、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
132 単純に考えて、領域pixel と texture pixel が一緒だと考えると
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
133 一個の Span で最大 64 (512/8) 個の tile があればいいと考えられる。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
134 一個の SPE には Tile を 128 個持っておけるし、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
135 今は Span を二つ平行して処理しているので、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
136 途中で Tile が足りなくなる!ってことはないはず。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
137 とまあ、いろいろ考えてたんだけど、何書けばいいのか忘れた。。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
138 思い出したらまた書きます。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
139
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
140 2009-01-26 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
141
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
142 * spe/CreateSpan.cpp (CreateSpan::run): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
143 ポリゴンをx軸に水平に分割し、その二つを計算するってのが
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
144 half_triangelで、上としたで、何故か渡すテクスチャの情報が違う。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
145 なんでだろうと思いつつも、今まで特に問題が出なかったから無視してたが、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
146 今回、三つのSceneGraph を動かしてる時に問題発生。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
147 それぞれ違うテクスチャを貼ってるのに、なぜかそれらのうちの半分が
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
148 別のテクスチャが貼られていた。簡単に言うと、A,B,C の SG があった。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
149
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
150 A: 正常
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
151 B: 右上だけ A のテクスチャ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
152 C: 右上だけ A のテクスチャ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
153
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
154 といった具合。わけがわからなかったんだが、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
155 half_triangle に渡すやつの所為だと気づきました
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
156 なんでここだけ pp->tri[0].tex_info.addr とか渡してんのか未だに謎。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
157 単なる書き間違いか直し間違いか。微妙なところ。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
158 これ書いた後輩はもう居ない
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
159
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
160
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
161 * SceneGraphIterator.cpp (SceneGraphIterator::hasNext)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
162 (SceneGraphIterator::next): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
163 検索する引数を int id に変更。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
164
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
165 * SceneGraph.h (class SceneGraph): add variable
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
166 int flag_drawbale : この SceneGraph は描画する物かどうか
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
167 int sgid : SceneGraph の ID 。ID は SGList.h にあるものを使う
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
168
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
169 * SceneGraphIterator.cpp : add file
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
170 SceneGraph を走査する用。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
171 基本、Java の Iterator を参考にしてます。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
172 追加機能としては
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
173
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
174 - hasNext(const char* name);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
175 名前が name の SceneGraph があるかどうか
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
176
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
177 - next(const char* name);
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
178 名前が name の SceneGraph まで進ませる
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
179
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
180 * SceneGraphIterator.cpp : TODO
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
181 hasNext とかは名前じゃなくて ID が良いかなーとも思うけどね。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
182 てかその方がいいな。あとで直します
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
183
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
184 * ieshoot.cpp (ieboss_move): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
185 (ieboss_collision): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
186 BOSSの動きを追加。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
187 IETAMA が数回衝突したら BOSS を消すって処理。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
188
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
189 * SceneGraphIterator.cpp (SceneGraphIterator::next): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
190 break してなかった。そりゃ取れないわ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
191
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
192 * SceneGraph.cpp (SceneGraph::realRemoveFromTree): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
193
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
194 < p1 = p1->next;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
195 < p = p->next;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
196 =====
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
197 > p1 = p1->brother;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
198 > p = p->brother;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
199
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
200
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
201 * viewer.cpp (Viewer::run_draw): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
202 Spanの無い部分を塗りつぶす処理はタスクを走らせず、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
203 そのまま memset とかの方が早い。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
204 まとめてするタスクを立ち上げるってのもいいかもしれない。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
205 あと、memsetで指定する値が、0xFF と 0x00 とで速度が違う。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
206 universe だと、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
207
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
208 0xFF 24fps
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
209 0x00 30fps
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
210
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
211 なんだろう。0x00 だと、ただのクリアになるから速いってことかな。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
212
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
213 * Camera.h (class Camera): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
214 とりあえず Camera を作って、これを SceneGraph の Top にした。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
215
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
216 * SceneGraph.cpp (SceneGraph::realRemoveFromTree): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
217 realRemove() の Tree構造用。削除後の tree top を返す様にしている。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
218 まあ top が消えなければ返す必要も無いし、top が消えるってことは
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
219 SceneGraph そのものが消えるってことでそうは無い・・はずだけどね。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
220 (SceneGraph::realRemoveFromList): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
221 realRemove() の list用。削除後の list top を返す様にしている。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
222 (SceneGraph::realRemoveFromTree): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
223 < p->next = p1->next;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
224 ===
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
225 > p->brother = p1->brother;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
226
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
227 2009-01-25 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
228
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
229 * add (tools/create_sglist): new
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
230 必要な SceneGraph xml file から SceneGraph を抽出し、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
231 名前と対応する ID を SGList.h に出力する。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
232 また、名前から ID を求める sglist_table を SGList.cpp に出力する。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
233
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
234 * SceneGraph.cpp (SceneGraph::remove): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
235 User API。ここで削除するのではなく、まずはフラグを立てるだけ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
236 ここですぐに消すと、allExecute() の走査で何気に困る
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
237
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
238 (SceneGraph::isRemoved): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
239 この SceneGraph 削除フラグが立っているかどうか
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
240
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
241 (SceneGraph::realRemove): TODO
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
242 子を持つ SceneGraph が消された場合、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
243 その子孫を全て削除するかどうか。まあ削除するのかな。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
244
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
245 (SceneGraph::realRemove): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
246 Cerium System で呼ばれる。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
247 remove flag の立った SceneGraph を削除する。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
248 parentやbrother、next は繋ぎ直す。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
249
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
250 * SceneGraphRoot.cpp (SceneGraphRoot::addNext): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
251 sg_available_list に追加していく
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
252 木の操作が要らないアクセスの際にはこっちの方がいい。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
253
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
254 (SceneGraphRoot::setSceneData): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
255 Cerium に SceneGraph の tree を渡す。Cerium はこの tree を辿って
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
256 処理を行う
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
257
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
258 (SceneGraphRoot::createFromXMLfile): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
259 xml file を指定して、そこから SceneGraph を生成し、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
260 sg_src に格納する。ユーザはこの SceneGraph を直接は扱えない。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
261 以下に示す createSceneGraph の、読み込み元データとして保存しておく。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
262
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
263 (SceneGraphRoot::createSceneGraph): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
264 オリジナルの SceneGraph を clone してユーザに返す。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
265 この SceneGraph をユーザが操作する。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
266
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
267 * SceneGraphRoot.h (class SceneGraphRoot): new variables
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
268 sg_src, sg_exec_list, sg_draw_list, sg_available_list
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
269
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
270 * addfile (SceneGraphRoot.cpp)
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
271 SceneGraph を管理するクラス、ってところか。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
272 Root ってのは SceneGraph という名前からすると
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
273 一番親と思われそうで微妙です。変えるかも。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
274
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
275 2009-01-12 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
276
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
277 * Joystick.cpp: TODO
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
278 使用している Joystick が
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
279
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
280 1. PS3 コントローラ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
281 2. PS2 コントローラにUSB変換をかましたやつ
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
282
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
283 によってボタンの番号配置が違うので
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
284 そこを自動的に取得して割り振りたい
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
285
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
286 SDL_JoystickName() で名前取れるんだけど
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
287 全部共通なのかなー。「PS3って文字列があるか否か」でわけてもいいけど
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
288
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
289 * Joystick.cpp: fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
290 コントローラボタンの番号を PS3 コントローラに合わせました。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
291
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
292 - 参考
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
293 PS3 Linux SDLでプログラミング -コントローラを使う-
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
294 http://yun.cup.com/ps3sdl007.html
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
295
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
296 アナログスティックの方はまだです
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
297
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
298 2009-01-08 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
299
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
300 * spe/DrawSpanRenew.cpp (DrawSpanRenew::run): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
301 next_spack を free() していたが、do-while の最初で
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
302 next_spack = NULL とかやっている。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
303 DrawSpan だと、free するのは free_spack ってやつなので
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
304 問題なかったが、なぜここは free(next_spack) とかやってるのか。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
305 というわけで、next_spack,spack 両方用の
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
306 free_spack1, free_spack2 を生成して、これを free させることに。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
307 これで、ようやくまともに動くようになった。けど微妙です。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
308 遅いですね。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
309
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
310 * addFile : DrawSpanRenew.cpp
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
311 DrawSpan の再起動 ver。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
312
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
313 2008-12-22 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
314
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
315 * fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
316 charles を Fedora 10 に上げて、コンパイラが新しくなったせいか、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
317 以下のような warning が出始めた
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
318
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
319 warning: deprecated conversion from string constant to 'char *'
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
320
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
321 まあよくわからんが、例えば
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
322
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
323 char *str = "hoge";
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
324
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
325 みたいな所だとこの warning が出る。これを
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
326
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
327 const char *str = "hoge";
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
328
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
329 にすると消えた。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
330 以後こういう形に統一しろよ的なやつなのかな。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
331
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
332 2008-12-19 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
333
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
334 * viewer.cpp (Viewer::run_draw): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
335 startx, endx に対して、start_y, end_y って名前は統一されてなくて
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
336 わかりづらいので、starty, endy に変更
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
337
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
338 * main.cpp (init): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
339 bpp (BitsPerPixel) の値がデフォルトで 0 になっていた。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
340 今のレンダリング方式では 32 がデフォルトなので、間違ってた。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
341 今まで気づかなかったのは
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
342
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
343 1. SDL_SetVideoMode に bpp = 0 で渡される
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
344 2. SDL が開発・実行環境に合わせて bpp を設定
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
345 3. 今までそれが 32 になってた
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
346
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
347 しかし、ゲーム班の環境では bpp = 16 になってしまったため、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
348 その次の bitmap の allocate の時に
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
349 screen->pitch*height = 16*width*height となり、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
350 DrawSpan では 32 のつもりで書き込んでいたため領域外への
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
351 メモリ書き込み->エラー
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
352
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
353 ゲーム班ありがとう
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
354
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
355 2008-12-16 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
356
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
357 * SceneGraph.cpp (makeTapestry): add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
358 SceneGraph::get_data にあったけど、ごちゃごちゃしてたので
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
359 関数として生成
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
360
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
361 * viewer.cpp (Viewer::run_init, Viewer::run_draw): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
362 * spe/DrawSpan.cpp (DrawSpan::zRow_init): delete
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
363
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
364 Z Buffering に使う zRow は DrawSpan で毎回生成、初期化するのではなく、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
365 PPE で生成、初期化を行っておき、DrawSpan に add_inData で
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
366 DMA で渡すという方法に変更。速度的にはほんのちょっとしか(ry
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
367
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
368 * spe/CreateSpan.cpp (CreateSpan::half_triangle): fix
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
369 getScale に渡す tex_width,tex_height を修正。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
370 比較にそのまま tex_width, tex_height を使うと、
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
371 Span が持つテクスチャが全体の一部分だったとしても
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
372 比較結果で縮小が行われてしまうため。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
373
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
374 - 例
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
375 span->length_x = 32;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
376 tex_width = 128;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
377 tex_x_len = (span->tex_x2 - span->tex_x1) = (0.5 - 0.3) = 0.2;
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
378
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
379 今までの処理だと、span->length_x < tex_width の結果により
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
380 縮小されたテクスチャを使うことになる。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
381 しかし、実際に Span が使う Texture の長さは
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
382
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
383 tex_width*tex_x_len = 24
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
384
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
385 なので、縮小を行う必要は無い
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
386
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
387
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
388 2008-12-12 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp>
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
389
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
390 * SceneGraph.cpp (SceneGraph::get_data): Todo
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
391 テクスチャの縦横が 8 の倍数でなければ弾く処理を入れる。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
392
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
393 * spe/DrawSpan.cpp (DrawSpan::run): Todo
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
394 テクスチャの座標計算と、そこから取得できる Tile の DMA を
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
395 一スレッドで処理しているのでそれを分けないといけない
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
396
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
397 * spe/CreateSpan.cpp (getTapestry): Add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
398 (getScale): Add
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
399
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
400 * memo: 雑記
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
401 ようやくこいつに ChangeLog を加えました。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
402 なんか emacs で「C-x 4 a」とかすると、ChangeLog の entry が
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
403 加えれられるんだけど、上の階層のを探しにいくので、TaskManager/ のに
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
404 加えようとしてたわけさ。まあそういう仕様なんだけど。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
405 で、だからといって不可能ってわけじゃないから書けばよかったんだが。
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
406
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents:
diff changeset
407 要するに、これからはちゃんと書いていこうと思います。