guLoadTextureBlockMipMap.htm
3.85 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
<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 "gu.h"
<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->base = (unsigned char *)&RGBA16grid_32[0];
<P>
imp->fmt = G_IM_FMT_RGBA;
<P>
imp->siz = G_IM_SIZ_16b;
<P>
imp->xsize= 32; /* source image 'x' size */
<P>
imp->ysize= 32; /* source image 'y' size */
<P>
imp->lsize= 32* sizeof(unsigned short); /* size of a source
image row */
<P>
imp->addr = 0; /* offset into storage buffer. Needs to be zero
*/
<P>
imp->w = 32; /* width of rectangular section of image(tile)
*/
<P>
/* to be extracted for mipmapping */
<P>
imp->h = 32; /* height of rectangular section of image */
<P>
/* to be extracted for mipmapping */
<P>
imp->s = 0; /* 's' and 't' offsets into source image to */
<P>
imp->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>