Mercurial > hg > Game > Cerium
annotate TaskManager/Test/test_render/Tapestry.h @ 222:0351818cf0fe draft
fix
author | gongo@localhost.localdomain |
---|---|
date | Tue, 10 Feb 2009 13:09:52 +0900 |
parents | e75f9eb97180 |
children | a314d8cd2082 |
rev | line source |
---|---|
117 | 1 #ifndef INCLUDED_TAPESTRY |
2 #define INCLUDED_TAPESTRY | |
3 | |
167
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
4 #ifndef INCLUDED_TYPES |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
5 # include "types.h" |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
6 #endif |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
7 |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
8 #ifndef INCLUDED_VIEWER_TYPES |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
9 # include "viewer_types.h" |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
10 #endif |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
11 |
117 | 12 /** |
13 * image file name と tapestry DB の binary tree | |
14 * | |
15 * // PPE | |
16 * main memory の tapestry DB (Array) | |
17 * tapestry DB への accessor | |
18 * | |
19 * TapestryPtr getTapestry(int TapestryID); | |
20 * TilePtr getTile(TapestryPtr tapsetry, int tx, int ty, int scale); | |
21 * | |
22 * SPE が生成する tapestry List (in CreateSpan) | |
23 * (no texture image) | |
24 * @in TapestryDBPtr, Tapestry ID, x, y, tx, ty, px, py | |
25 * x, y : polygon の中の平面座標 | |
26 * tx, ty : texture の座標 | |
27 * px, py : texture の分割数 | |
28 * | |
29 * @out (TilePtr, tix1, tiy1, tix2, tiy2)* | |
30 * | |
31 * | |
32 * SPE に渡す tapestry List | |
33 * @in Tile | |
34 * | |
35 * // SPE | |
36 * SPE 内部での tapestry DB (Hash) | |
37 * TapestryID, scale, TilePtr, Tile | |
38 * | |
39 * | |
40 * SPE 内部での tapestry DB への accessor | |
41 * TileEntryPtr getTile(int TapestryID, int tx, int ty, int scale); | |
42 * | |
43 * if (TileEntry == NULL) { | |
44 * DMA read | |
45 * } | |
46 * | |
47 * | |
48 * Rendering | |
49 * 1pass Zbuffer と Texture の有無の判定 | |
50 * if (zbuffer ok) { | |
51 * if (texture ある) { | |
52 * zbuffer 、linebunf に書き込む | |
53 * } else { | |
54 * texture の load list に加える | |
55 * zbuffer だけ更新しておく | |
56 * } | |
57 * } else { | |
58 * 無視 | |
59 * } | |
60 * | |
61 * 1pass で texture が一杯になったら、中断して | |
62 * ここまでのを書き込んどけ | |
63 * | |
64 * | |
65 * 2pass rgb の書き込み | |
66 * | |
67 * if (zbuffer の値が自分と一緒) { | |
68 * read した texture みて | |
69 * 書き込め! | |
70 * } | |
71 * | |
72 */ | |
73 struct texture_block { | |
74 | |
75 }; | |
118 | 76 #if 0 |
117 | 77 struct TileList { |
78 TilePtr tile; | |
79 int tix1, tiy1, tix2, tiy2; | |
80 }; | |
81 #endif | |
167
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
82 |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
83 typedef struct { |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
84 uint32 pixel[TEXTURE_BLOCK_SIZE]; // 8*8 |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
85 uint32 *texture_addr; |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
86 int pad[3]; |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
87 } Tile, *TilePtr; |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
88 |
193 | 89 #define MAX_TILE 128 |
167
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
90 |
176 | 91 /** |
92 * TileList 中の Tile の追い出しは、現在 FIFO で実装している | |
93 */ | |
173 | 94 class TileList { |
95 public: | |
96 int curIndex; | |
167
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
97 int pad[3]; |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
98 Tile tile[MAX_TILE]; |
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
99 |
173 | 100 TileList(void) { |
101 curIndex = 0; | |
167
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
102 } |
173 | 103 |
104 /** | |
176 | 105 * 次に扱う tile を取得する |
106 * | |
107 * @return tile | |
108 * | |
173 | 109 * tile[] をリングバスっぽく扱うことで |
110 * FIFO を実現することに。 | |
111 */ | |
112 TilePtr nextTile(void) { | |
113 TilePtr t = &tile[curIndex]; | |
114 curIndex = (curIndex + 1) % MAX_TILE; | |
115 return t; | |
116 } | |
117 | |
176 | 118 /** |
119 * TileList のクリア | |
210 | 120 * //tile 自体は clear する必要は無い |
121 * あるかもしれない | |
176 | 122 */ |
173 | 123 void clear(void) { |
124 curIndex = 0; | |
125 } | |
126 }; | |
127 | |
128 typedef TileList* TileListPtr; | |
167
508beb59e0eb
DrawSpan で使う Tile の Hash の扱いは class TileHash を生成する事に。
gongo@localhost.localdomain
parents:
118
diff
changeset
|
129 |
118 | 130 #endif |