gDPLoadTexture.htm
7.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<A NAME="_Toc366998302"></A><B><FONT FACE="Arial">gDPLoadTexture(3P)
<BR>
</FONT></B>
<P>
<B>関数名<B> </B> <B>
<BR>
</B></FONT></B>
<P>
gDPLoadTexture, gDPLoadTextureBlock, gsDPLoadTextureBlock,
gDPLoadTextureBlock_4b, gsDPLoadTextureBlock_4b, gDPLoadTextureTile,
gsDPLoadTextureTile, gDPLoadTextureTile_4b, gsDPLoadTextureTile_4b, gDPLoadBlock, gsDPLoadBlock
<P>
→RDPテクスチャメモリに、連続テクスチャブロックまたは、大きいテクスチャイメージのサブタイルをロードします。
<BR>
</FONT>
<P>
<B>構文 <BR>
</B>
<P>
#include "gbi.h "
<P>
gDPLoadTextureBlock(Gfx *gdl,
<P>
unsigned int timg,
<P>
unsigned int fmt,
<P>
unsigned int siz,
<P>
unsigned int width, height,
<P>
unsigned int pal,
<P>
unsigned int cms, cmt,
<P>
unsigned int masks, maskt,
<P>
unsigned int shifts, shiftt)
<P>
gDPLoadTextureBlock_4b(Gfx *gdl,
<P>
unsigned int timg,
<P>
unsigned int fmt,
<P>
unsigned int width, height,
<P>
unsigned int pal,
<P>
unsigned int cms, cmt,
<P>
unsigned int masks, maskt,
<P>
unsigned int shifts, shiftt )
<P>
gDPLoadTextureTile(Gfx *gdl,
<P>
unsigned int timg,
<P>
unsigned int fmt,
<P>
unsigned int siz,
<P>
unsigned int width, height,
<P>
unsigned int uls, ult, lrs, lrt,
<P>
unsigned int pal,
<P>
unsigned int cms, cmt,
<P>
unsigned int masks, maskt,
<P>
unsigned int shifts, shiftt )
<P>
gDPLoadTextureTile_4b(Gfx *gdl,
<P>
unsigned int timg,
<P>
unsigned int fmt,
<P>
unsigned int width, height,
<P>
unsigned int uls, ult, lrs, lrt,
<P>
unsigned int pal,
<P>
unsigned int cms, cmt,
<P>
unsigned int masks, maskt,
<P>
unsigned int shifts, shiftt )
<p>
gDPLoadBlock(Gfx *gdl,
<p>
unsigned int tile,
<p>
insigned int uls,
<p>
insigned int ult,
<p>
insigned int lrs,
<p>
insigned int dxt)
<br>
<P>
<B>パラメータ <BR>
</B>
<P>
<B>*gdl</B>
グラフィックディスプレイポインタ。</FONT>
<P>
<B>timg</B>
DRAM中のテクスチャイメージ位置。 64ビット境界でなければなりま
<P>
せん。
<P>
<B>fmt</B> テクスチャイメージフォーマット。G_IM_FMT_RGBA,
G_IM_FMT_YUV, G_IM_FMT_CI, G_IM_FMT_IA, G_IM_FMT_I </FONT>
<P>
<B>siz</B> テクセルサイズ。G_IM_SIZ_4b,
G_IM_SIZ_8b, G_IM_SIZ_16b, G_IM_SIZ_32b</FONT>
<P>
<B>width, height</B>
テクスチャイメージの幅と高さ(テクセル)。
テクスチャタイル をロードする時は、DRAM内の(大きい)オリジナルテクスチャイメ
ージの幅と高さを指定してください。</FONT>
<P>
<B>uls, ult, lrs, lrt</B>
</FONT>
<P>
ソースイメージのテクスチャタイルの左上のs,t座標および、右下のs,t
座標。</FONT>
<P>
<B>pal</B>
<P>
インデックスを付けられたテクスチャがどのテクスチャルックアップテー
ブルパレットを使用するべきか示します。
<P>
<B>cms, cmt</B>
</FONT>
<P>
s,t軸のクランプ、ラップ、ミラーフラグ。G_TX_NOMIRROR,
G_TX_WRAP , </FONT>
<P>
G_TX_MIRROR, G_TX_CLAMP
<P>
<B>masks, maskt</B>
</FONT>
<P>
s,t軸のマスク。G_TX_NOMASK
あるいは数がラップ位置を指定する数。
<P>
<B>shifts, shiftt</B>
</FONT>
<P>
s,t座標のシフト値。
ディテールテクスチャの下位レベル用。シフトしな
い場合は,G_TX_NOLODを使用します。
<BR>
</FONT>
<P>
<b>tile</b>
<p>
<b>g*DPLoadBlock</b>の為のタイルナンバー。
<p>
<b>dxt</b>
<p>
<b>g*DPLoadBlock</b>の為のスキャンライン毎の<b>t</b>値の変化量。
<p>
<B>説明 <BR>
</B>
<P>
これらのコマンドは,テクスチャをDRAMからRDPのオンチップ・テクスチャメモリ(TMEM)にします。<b>gDPLoadBlock*</b>コマンドはメモリに連続テクスチャイメージをロードします。これは最も効率的なローディングメカニズムです。DRAM転送は大きいブロックの場合、最も効率的です。<b>gDPLoadTile*</b>コマンドはメモリから大きいテクスチャイメージのサブタイルをロードします。
<BR>
</FONT>
<P>
メモリの条件を理解するためにGBIディスプレイリストサイズを計算する場合は、それらのコマンドはGBI
64bitコマンドで構成されています。
<BR>
</FONT>
<P>
テクスチャイメージフォーマットは数多くあります。テクスチャの適切な圧縮方法や種類によって、最も良い方法を選択してください。4/8/16/32bitテクセルサイズがサポートされています。インデックスには、1/2/4のコンポーネントテクスチャがサポートされています。
Iはインテンシティテクスチャです。IA
はインテンシティアルファテクスチャです。RGBA
はトゥルーカラーテクスチャです。CI
はカラーインデックステクスチャです。
<BR>
</FONT>
<P>
4bitテクスチャをロードする時、そのタイプにかかわらず、サフィックス_4bを持つマクロを使用してください。これらのマクロを使用する時は、サイズは黙示されており、パラメータリストに含められていません。4bitテクスチャはバイト境界上にアラインされなければなりません。
<BR>
</FONT>
<P>
widthとheighはテクセル空間上のものです。DRAM上のソーステクスチャイメージのサイズを示します。
<BR>
</FONT>
<P>
ul(s,t), lr(s,t)座標はタイルされたテクスチャのロードにのみ使用されます。これらはテクセル空間にTMEMにロードするサブタイルのコーナーを指定します。
<BR>
</FONT>
<P>
cms,cmtは,s,t軸のクランプ、ミラー、ラップフラグを設定する。これらのフラグは、テクスチャプロパティを好みの状態に指定するためにビットOR演算されます。ミラーテクスチャはツリーのような軸に対象なテクスチャに使用できます。クランプテクスチャは、テクスチャマップの外側をサンプリングする時に、テクセルエッジカラーを繰り返します。ラップテクスチャはラッピングに必要なマスクを要求します。masks,masktの番号nは、テクスチャをサンプリングするために使用するs,t座標の下位nビットを示します。32x32のテクスチャを使用していて、エッジにラップしたい場合、masks,masktに5を使用してください。
<BR>
</FONT>
<P>
shift値はテクセル座標s,tを、左右にシフトさせます。これは下位のLODマップとディテールテクスチャの適切なサンプリングを可能にします。ミップマップテクスチャを作成するためには他にも多くのステップが必要になります。そのため、これらのコマンドでshift値が使用されないこともあります。
<BR>
</FONT>
<P>
width,hightの最大限のレンジをサポートするために<b>gDPLoadTextureBlock</b>に変わるフォーマットがあります。これらのフォーマットはテクスチャが前もってスワップすることを示すために"S"で終わります。(すなわち、テクスチャの奇数ラインはワードスワップされます)。"-S"フラグについては<a href="../tool/rgb2c.htm">rgb2c(1)</a>を参照してください。
<BR>
</FONT>
<P>
テクスチャタイルをロードする時、タイルの4角のピクセルアドレスだけはバイトアラインである必要があります。しかしながら、タイルの列幅が64bitアラインでない場合、ハードウェアはTMEMにそれぞれの列の右側を64bitアラインに自動的に埋め込みます。(これは<b>LoadTextureTile</b>コマンドに限ります。)
<BR>
</FONT>
<P>
<b>gDPLoadBlock()</b>, <b>gsDPLoadBlock()</b>は通常プログラムには使用しないロウレベルマクロです。それらは単発的な転送でTMEMをロードしますが、いくつかの制約があります。このコマンドでロードできる最大テクセル数は2048です。TMEMの4K全てをロードするためには、G_IM_SIZ_16bタイプのテクスチャをロードする必要があり、ロード後に正しいテクセルサイズにタイルを変更します。<b>g*DPLoadTextureBlock()</b>マクロは常にそれを行いますが、このロウレベルマクロを直接使用する場合は、アプリケーションでそれらのタイル操作を行ってやる必要があります。
<BR>
</FONT>
<P>
<font size=2><b>LoadBlock</b><FONT SIZE=2 FACE="MS 明朝">コマンドは、それ自身ではパディングを行いません。ブロックのロードを行う前にデータの水増しを行ってください。
</font>
<p>
追加テクスチャマクロはgbi.hで定義されています。;詳しくははgbi.hを参照してください。
<BR>
</FONT>
<P>
<B>バグ <BR>
</B>
<P>
これらのマクロの"S"フォーマットの使用方法についてはプログラミングマニュアルのテクスチャマッピングの章Appendix
Aも参照してください。<BR>
</FONT>
<P>
<B>参照 <BR>
</B>
<P>
<a href="../gdp/gDPLoadTLUT.htm">gDPLoadTLUT(3P)</a>, <a href="../gu/guLoadTextureBlockMipMap.htm">guLoadTextureBlockMipMap(3P)</a>, <a href="../tool/rgb2c.htm">rgb2c(1)</a>
<BR>
<BR>
</BODY>
</HTML>