gSPClipRatio.htm
3.88 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
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">gSPClipRatio(3P)</FONT><FONT FACE="MS Pゴシック"> <B>
<BR>
</B></FONT></B>
<P>
<B>関数名<B> <BR>
</B></B>
<P>
gSPClipRatio, gsSPClipRatio
<P>
→ クリッピング/シザリング長方形の相対的なサイズの指定。
<BR>
<P>
<B>構文<BR>
</B>
<P>
#include "gbi.h"
<P>
FRUSTRATIO_1
<P>
FRUSTRATIO_2
<P>
FRUSTRATIO_3
<P>
FRUSTRATIO_4
<P>
FRUSTRATIO_5
<P>
FRUSTRATIO_6
<P>
gSPClipRatio(Gfx *gdl, r)
<P>
gsSPClipRatio (r) <BR>
<P>
<B>パラメータ <BR>
</B>
<P>
<B>*gdl</B> グラフィックディスプレイリストポインタ。
<P>
<B>r</B> ビューポート長方形のサイズに対するクリッピング長方形サイズの率。
<P>
FRUSTRATIO_1, FRUSTRATIO_2, ... ,FRUSTRATIO_6のうちの一つ。
<BR>
<P>
<B>解説 <BR>
</B>
<P>
このコマンドはRSPにどのようにクリッピングやシザリングを行うのかを伝え、パフォーマンス増加のための調整に使用します。
<BR>
<P>
シザリングは、全てのトライアングルをラスタライズし、その後オフスクリーン部分のピクセルを取り外すことで実行されます。シザリングはRDP内での処理時間がかかります。
<BR>
<P>
クリッピングは、大きいトライアングルを1つ以上のそれより小さいトライアングルに置き換える処理を行います。その小さいトライアングルとは、シザリング長方形のサイズの1〜6倍であるクリッピング長方形内ににすべてがフィットしているものです。完全にクリッピング長方形の中にあるトライアングルは、クリッピングされません。完全にシザリング長方形の外にある三角形は、当然無視されます。(この処理は非常に高速です)。シザリング長方形の内側から、クリッピング長方形の外側まで続いているトライアングルは、クリッピングされます。(RSPでの処理時間がかなりかかります。)クリッピング長方形をシザリング長方形よりずっと大きくするとRDPでの処理時間がより多くかかることになります。なぜなら、より多くのピクセルがシザリングされるからです。しかしながら、そのことによってRSPの処理時間は短くなります。なぜなら、シザリング長方形の内側から、クリッピング長方形の外側までかかるような大きなトライアングルは少なく、そのためクリッピングされる三角形が少なくて済むからです(クリッピングはRSPの処理時間を費やします。)。トライアングルがクリッピングされる時、それはしばしば1つ以上の(より小さい)トライアングルに変換されます。2つのトライアングルを描くことはより大きい1つのトライアングルを描くよりもRDPでの処理時間がかかるので、クリッピング長方形をシザリング長方形より大きくすることにより、RDPをスピードアップさせることができます。
<BR>
<P>
どの比率を使用するのがもっともベストなのかはそれぞれのモデルに依存しますので、このコマンドで異なった値をそれぞれ試し、最良のパフォーマンスが得られるものを選択してください。
<BR>
<P>
<B>注意<BR>
</B>
<P>
これらは全て、シザリング長方形がビューポートのサイズと同じであると想定しています。(<a href="../gdp/gDPSetScissor.htm">gDPSetScissor(3P)</a>,
<a href="../gsp/gSPViewport.htm">gSPViewport(3P)</a>を参照してください。) <BR>
<P>
<B>例<BR>
</B>
<P>
クリッピング長方形をシザリング長方形の5倍のサイズにする方法:
<P>
gSPClipRatio(glist++, FRUSTRATIO_5); <BR>
<P>
<B>参照 <BR>
</B>
<P>
<a href="../gdp/gDPSetScissor.htm">gDPSetScissor(3P)</a>, <a href="../gsp/gSPViewport.htm">gSPViewport(3P)</a> <BR>
<p>
<hr size=1>
<img src="../Images/f3dex.gif">
<p>
<blink><b>F3DEXマイクロコード群で追加、変更された機能</b></blink>
<p>
<pre><font size=4>
gSPClipRatio(Gfx *gdl, r)
gsSPClipRatio( r)
</font></pre>
<p>
<blockquote>
<a href="../ucode/gspF3DEX.htm">F3DEX(.NoN)</a>、<a href="../ucode/gspF3DEX.htm">F3DLX(.NoN)</a>における<b>gSPClipRatio(3P)</b>の動作は<a href="../ucode/gspFast3D.htm">Fast3D</a>と同じですが、<a href="../ucode/gspF3DEX.htm">F3DL*.Rej(.NoN)</a>では<a href="../ucode/gspFast3D.htm">Fast3D</a>と異なり、リジェクトボックスの大きさの変更用として使用されます。
<a href="../ucode/gspF3DEX.htm">F3DL*.Rej</a>での初期値はFRUSTRATIO_2となっています。
</blockquote>
</BODY>
</HTML>