gSPBranchLessZ.htm
2.66 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
<HTML>
<BODY>
<img src="../Images/f3dex.gif">
<p>
<blink><b>F3DEXマイクロコード群で追加、変更された機能</b></blink>
<p>
<B><FONT FACE="Arial">gSPBranchLessZ(3P) <BR>
</FONT></B>
<P>
<B>関数名<BR>
</B>
<P>
gSPBranchLessZ, gsSPBranchLessZ
<P>
→モデルのLOD処理<BR>
<P>
<b>構文</b>
<p>
<pre><font size=4>
gSPBranchLessZ(Gfx *gdl, Gfx *branchdl, unsigned int vtx,
float zval, float near, float far, int flag)
gsSPBranchLessZ( Gfx *branchdl, unsigned int vtx,
float zval, float near, float far, int flag)
</font></pre>
<p>
<b>パラメータ</b>
<p>
<blockquote>
<b>*gdl</b>
<blockquote>
グラフィクスディスプレイリストポインタ
</blockquote>
<b>*branchdl</b>
<blockquote>
ブランチするディスプレイリストへのポインタ
</blockquote>
<b>zval</b>
<blockquote>
Z値
</blockquote>
<b>near</b>
<blockquote>
nearプレーンの位置。(<a href="../gu/guPerspective.htm">guPerspective</a>または<a href="../gu/guOrtho.htm">guOrtho</a>で指定した値。)
</blockquote>
<b>far</b>
<blockquote>
farプレーンの位置。(<a href="../gu/guPerspective.htm">guPerspective</a>または<a href="../gu/guOrtho.htm">guOrtho</a>で指定した値。)
</blockquote>
<b>flag</b>
<blockquote>
透視射影の時はG_BZ_PERSPを、正射影の時はG_BZ_ORTHOを指定します。
</blockquote>
</blockquote>
<p>
<b>説明</b>
<p>
<blockquote>
vtxで指定した頂点の奥行きがzval以下なら、branchdlで指し示されるディスプレイリストへBranchDisplayListを行います。zvalを越えるなら何もしません。これによってモデルのLOD処理が簡単に行えます。以下は3段階のLODを持つモデルの例です。
<p>
<pre><font size=4>
Gfx model_near[] = { // 距離 32 以上 200 以下のモデル
.....
gsSPEndDisplayList(),
};
Gfx model_mid[] = { // 距離 201 以上 800 以下のモデル
.....
gsSPEndDisplayList(),
};
Gfx model_far[] = { // 距離 801 以上 1600 以下のモデル
.....
gsSPEndDisplayList(),
};
Gfx model[] = {
gsSPVertex(testvtx, 1, 0),
gsSPBranchLessZ(model_near, 0, 200, 32, 2000, G_BZ_PERSP),
gsSPBranchLessZ(model_mid, 0, 800, 32, 2000, G_BZ_PERSP),
gsSPBranchLessZ(model_far, 0, 1600, 32, 2000, G_BZ_PERSP),
gsSPEndDisplayList(), // 距離 1601 以上なら描画せず
};
</font></pre>
<p>
このコマンドはビューポートのZ方向のパラメータvp.vscale[2]とvp.vtrans[2]の値が共にG_MAXZ/2であることを想定しています。このとき奥行き値は0以上G_MAXZ以下となります。通常はアプリケーション側でこの奥行き値の変更をする必要はありません。ただし、どうしてもこの値を変更したい場合は、代わりに<a href="../gsp/gSPBranchLessZrg.htm">gSPBranchLessZrg</a>をご使用ください。
<p>
このGBIは<a href="../ucode/gspF3DEX.htm">F3DEXマイクロコード群</a>の全てで共通に使用できます。
</blockquote>
</BODY>
</HTML>