guLoadTextureBlockMipMap.htm 3.85 KB
<HTML>

<HEAD>

<TITLE>HTML 文書</TITLE>

<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>

<BODY>

<P>
<A NAME="_Toc366998647"></A><B>guLoadTextureBlockMipMap(3P)
<BR>
</B>
<P>
<B>関数名<BR>
</B>
<P>
guLoadTextureBlockMipMap
<P>
→ ソーステクスチュアアレイからミップマップ(mipmap)ピラミッドを計算し、ミップマップテクスチュアのロードとレンダリングに必要なディスプレイリストを返します。
<BR>

<P>
<B>構文<BR>
</B>
<P>
#include &quot;gu.h&quot;
<P>
int guLoadTextureBlockMipMap(Gfx **glistp, unsigned char *tbuf,
<P>
Image *imp, unsigned char pal,
<P>
unsigned char cms, unsigned char cmt,
<P>
unsigned char masks, unsigned char maskt,
<P>
unsigned char shifts, unsigned char shiftt
<P>
unsigned char cfs, unsigned char cft)<BR>

<P>
<B>パラメータ<BR>
</B>
<P>
<B>glistp</B>
<P>
リターンされたディスプレイリストへのポインタアドレス(ポインタはディスプレイリストの最後を指すためにインクリメントされます。)
<P>
<B>tbuf</B>
<P>
mipmapタイルをホールドするバッファ。tmemより小の値であることが必要です。tbufはRSPセグメントアドレスです。
<P>
<B>imp</B>
<P>
ソースイメージの情報を含むイメージストラクチャへのポインタ。以下にソースイメージの例を示します。
<P>
imp-&gt;base = (unsigned char *)&amp;RGBA16grid_32[0];
<P>
imp-&gt;fmt = G_IM_FMT_RGBA;
<P>
imp-&gt;siz = G_IM_SIZ_16b;
<P>
imp-&gt;xsize= 32; /* source image 'x' size */
<P>
imp-&gt;ysize= 32; /* source image 'y' size */
<P>
imp-&gt;lsize= 32* sizeof(unsigned short); /* size of a source
image row */
<P>
imp-&gt;addr = 0; /* offset into storage buffer. Needs to be zero
*/
<P>
imp-&gt;w = 32; /* width of rectangular section of image(tile)
*/ 
<P>
/* to be extracted for mipmapping */
<P>
imp-&gt;h = 32; /* height of rectangular section of image */
<P>
/* to be extracted for mipmapping */
<P>
imp-&gt;s = 0; /* 's' and 't' offsets into source image to */
<P>
imp-&gt;t = 0; /* define rectangular tile */ 
<P>
<B>pal</B>
<P>
カラーインデックステクスチュアのパレット数。
<P>
<B>cms, cmt</B>
<P>
s, tのクランプおよびミラーのパラメータ。(<AHREF="../gdp/gDPLoadTextureBlock.htm">gDPLoadTextureBlock</A>参照)
<P>
<B>masks, maskt</B>
<P>
s, tのラッピング用マスク(<A HREF="../gdp/gDPLoadTextureBlock.htm">gDPLoadTextureBlock</A>参照)
<P>
<B>shifts, shiftt</B>
<P>
ミップマップタイルへのインデックスに必要な、s, tアドレスの桁送り
<P>
(<A HREF="../gdp/gDPLoadTextureBlock.htm">gDPLoadTextureBlock</A>参照)
<P>
<B>cfs, cft</B>
<P>
s, t軸に沿ってフィルタ処理するためのクランプフラグ。これらが設定されている場合、フィルタカーネルのオーバーハング部分が、テクスチュアのエッジと同じテクセルをピックアップします。さもなければカーネルのオーバーハングはテクスチュア配列の反対の端へラップします。<BR>

<P>
<B>解説<BR>
</B>
<P>
このコールはシステムメモリ中のテクスチャイメージを取り出し、tbutにミップマップピラミッドを生成します。ピラミッド中のそれぞれのレベルは3x3フィルタカーネルに適用することで、前のレベルからフィルタリングされます。タイルをロードし、タイルパラメータをセットするディスプレイリストは、glistpで指定されるディスプレイリスト中に挿入されます。リターン後、ポインタは挿入されたリストの最後までインクリメントされます。返値は以下の通りです。
<BR>

<P>
<B>0</B> - 成功  
<P>
<B>1</B> - tmemにロードするにはミップマップが大きすぎます。致命的なエラーでない場合は、格納できるスペース分だけがロードされます。
<P>
<B>2</B> - サポートされていないテクセルフォーマットです。(RGBA32,YUVを 除いた全てのN64テクセルフォーマットをサポートしています。)
<BR>

<P>
<B>注意<BR>
</B>
<P>
切り抜いた絵のような(例えば木など)テクスチャに使用しているアルファチャンネルを使用したミップマップテクスチャはLODを使用してカットアウトの形を変えてしまいます。1bitアルファのテクセルフォーマット(RGBA16,
IA4等)で特に起こりやすい現象です。<BR>

<P>
<B>参照<BR>
</B>
<P>
<A HREF="../gdp/gDPLoadTexture.htm" >gDPLoadTexture</A>(3P) <BR>

</BODY>

</HTML>