gDPLoadTexture.htm 7.58 KB
<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 &quot;gbi.h &quot; 
<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>に変わるフォーマットがあります。これらのフォーマットはテクスチャが前もってスワップすることを示すために&quot;S&quot;で終わります。(すなわち、テクスチャの奇数ラインはワードスワップされます)。&quot;-S&quot;フラグについては<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>
これらのマクロの&quot;S&quot;フォーマットの使用方法についてはプログラミングマニュアルのテクスチャマッピングの章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>