gSPCullDisplayList.htm
4.38 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
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">gSPCullDisplayList(3P)</FONT><FONT FACE="MS Pゴシック"> <B>
<BR>
</B></FONT></B>
<P>
<B>関数名<B> <BR>
</B></B>
<P>
gSPCullDisplayList, gsSPCullDisplayList
<P>
→ オフスクリーンのディスプレイリストをカリングします。
<BR>
<P>
<B>構文<BR>
</B>
<P>
#include "gbi.h"
<P>
gSPCullDisplayList(Gfx *gdl, unsigned int v0, unsigned
int vn)
<P>
gsSPCullDisplayList(unsigned int v0, unsigned int
vn)<BR>
<P>
<B>パラメータ <BR>
</B>
<P>
<B>*gdl</B> グラフィックディスプレイリストポインタ。
<P>
<B>v0</B> 確認する最初の頂点のインデックス。
<P>
<B>vn</B> 確認する最終の頂点のインデックス。v0より大きくなければなりません。
<P>
<B>説明<BR>
</B>
<P>
このコマンドはビューイングボリュームに交差するバウンディングボリュームをどこにするのかを決定します。バウンディングボリュームが完全にビューイングボリュームの外側にある場合、そのディスプレイリストの残りは実行されません。
<BR>
<P>
バウンディングボリュームは、16個までのバーテックスで指定されます。頂点はカリングされるオブジェクトの完全な境界として記述するべきです。通常は8頂点をオブジェクトバウンディングキューブとして使用しますが、他にも16頂点までならどの数でも使用することができます。これらのバウンディング頂点は、<b>gSPCullDisplayList(3P)</b>コマンドより前に<a href="../gsp/gSPVertex.htm">gSPVertex(3P)</a>コマンドで指定されます。それらは,16の頂点バッファのどこにでも置くことができます(<a href="../gsp/gSPVertex.htm">gSPVertex(3P)</a>コマンド参照)。バウンディングボリューム中で最初と最後のインデックスを示すためにv0及びvnパラメータを使用します。バウンディングボリュームの頂点はモデル自身で使用することもありますし、そうでないこともあります。完全なバウンディングモデルはディスプレイリストの残りには含まれません。
<BR>
<P>
注意として、以下のことを必ず守ってください。 <BR>
<P>
0 <= v0 < vn <= 15<BR>
<P>
<B>例<BR>
</B>
<P>
バウンディングボックスが立方体で、その立方体の頂点が8 Vtxの集合体であるbound_vtxに格納されているモデルをボリュームカリングするには、
<BR>
<P>
gSPVertex(glist++, bound_vtx, 8, 0); /* インデックス0の8 vtxのロード
*/
<P>
gSPCullDisplayList(glist++, 0, 7); /* vtx 0-7を使用してカリングする
*/
<P>
/* ディスプレイリストの残りは、カリングされたモデルの表示部分。*/
<BR>
<P>
<B>注意<BR>
</B>
<P>
バウンディングボリューム頂点がこのテストの目的の為だけにロードされる場合は、ライティング計算が頂点ロード時に行われるので、RSPレンダリングステートのライティングをオフにセットするようにしてください。
<BR>
<P>
余分なボリュームバーテックス変換以外は、このコマンドの実行は基本的に処理時間はかかりません。RSP
ジオメトリエンジンは、頂点バッファ中にそれぞれのクリッピングコードを保持し、このカリングテストは単にそれらのクリッピングコードの破棄のみです。
<BR>
<P>
このコマンドは<a href="../gsp/gSPClipRatio.htm">gSPClipRatio(3P)</a>には影響されません。クリッピングボリュームはプロジェクションマトリクスとビューポートで定義されたビューイング長方形です。
<BR>
<P>
このコマンドの適切な使用は、若干のデータベースの計画を必要とします。いくつかのデータ、例えば水平なグランドプレーンは、それがほとんど常に見えているので、このテストを行う必要がありません(それを小分けすることはできますが。)。このテストは複雑なキャラクタやビューイングフレームを出たりはいったりするような複雑な動きをするものなどに非常に有効です。
<BR>
<P>
<B>参照 <BR>
</B>
<P>
<a href="../gsp/gSPVertex.htm">gSPVertex(3P)</a> <BR>
<p>
<hr size=1>
<img src="../Images/f3dex.gif">
<p>
<blink><b>F3DEXマイクロコード群で追加、変更された機能</b></blink>
<p>
<pre><font size=4>
gSPCullDisplayList(Gfx *gdl, unsigned int v0, unsigned int vn);
gsSPCullDisplayList( unsigned int v0, unsigned int vn);
</font></pre>
<p>
<blockquote>
頂点キャッシュの増加により、v0、vnの範囲が変更になりました。具体的には<a href="../gsp/gSPVertex.htm">gSPVertex</a>におけるv0の範囲と同じです。ただし、v0 <= vn である必要があります。
<p>
<a href="../ucode/gspF3DEX.htm">F3DEX(.NoN)</a>、<a href="../ucode/gspF3DEX.htm">F3DLX(.NoN)</a>、<a href="../ucode/gspF3DEX.htm">L3DEX</a>では<a href="../ucode/gspFast3D.htm">Fast3D</a>と同じ動作をしますが、<a href="../ucode/gspF3DEX.htm">F3DLX.Rej</a>、<a href="../ucode/gspF3DEX.htm">F3DLP.Rej</a>における本関数の振る舞いは<a href="../ucode/gspFast3D.htm">Fast3D</a>とは異なりますので注意が必要です。
</blockquote>
</BODY>
</HTML>