gDPFillRectangle.htm
5.25 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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<A NAME="_Toc366998295"></A><B><FONT FACE="Arial">gDPFillRectangle(3P)
<BR>
</FONT></B>
<P>
<B>関数名
<BR>
</FONT></B>
<P>
gDPFillRectangle, gsDPFillRectangle, gDPScisFillRectangle
<P>
→ 表示画面座標で単色の長方形をレンダリングします。
<BR>
<P>
<B>構文 <BR>
</B>
<P>
#include "gbi.h"
<P>
gDPFillRectangle(Gfx *gdl,
<P>
unsigned int ulx,
<P>
unsigned int uly,
<P>
unsigned int lrx,
<P>
unsigned int lry)
<P>
gsDPFillRectangle(unsigned int ulx,
<P>
unsigned int uly,
<P>
unsigned int lrx,
<P>
unsigned int lry)
<P>
gDPScisFillRectangle(Gfx *gdl,
<P>
unsigned int ulx,
<P>
unsigned int uly,
<P>
unsigned int lrx,
<P>
unsigned int lry)<BR>
<P>
<B>パラメータ <BR>
</B>
<P>
<B>*gdl</B>
グラフィックディスプレイリストポインタ</FONT>
<P>
<B>ulx, uly</B>
</FONT>
<P>
長方形の画面左上座標。各10bit精度。<a href="../gsp/gSPTextureRectangle.htm">gSPScisTextureRectangle</a>では負の値を,
<P>
それ以外の場合は正の値をセットしてください。
<P>
<B>lrx, lry</B>
<P>
長方形の画面右下座標。各10bit精度。<a href="../gsp/gSPTextureRectangle.htm">gSPScisTextureRectangle</a>では負の値を,
<P>
それ以外の場合は正の値をセットしてください。
<BR>
</FONT>
<P>
<B>解説 <BR>
</B>
<P>
このコマンドはブレンダー中に設定されているフィルカラーで
2D 長方形を描きます。この長方形は,フィルあるいはコピーモードで指定された座標を含んでレンダリングします。
例えば,ulx=0とlrx=19は,フィルまたはコピーモードで20カラムのピクセルを塗りつぶすことになります。また、1あるいは2サイクルモードでレンダリングされる場合は,底辺と右辺のエッジは含みません。例えば、1あるいは2サイクルモードではulx=0,lrx=19は、19のカラムを塗りつぶします。
<BR>
</FONT>
<P>
コピーモードは、<a href="../gsp/gSPTextureRectangle.htm">gSPTextureRectangle(3P)</a>コマンドを使用してレンダリングするためのモードですので,コピーモードで
<b>gDPFillRectangle</b>を使ってレンダリングした場合の動作の保証はできません。サイクルタイプ設定方法は<a href="../gdp/gDPSetCycleType.htm">gDPSetCycleType(3P)</a>を参照してください。
<BR>
</FONT>
<P>
このコマンドは通常、画面をクリアして、カラーバッファあるいはZバッファを初期化するために使用されます。
<BR>
</FONT>
<P>
<B>注意
<BR>
</FONT></B>
<P>
画面座標(0,0)は画面の左上角を指しています。
<BR>
</FONT>
<P>
各パラメータは10bit精度です。そのため,1024ピクセル以上の大きさのフレームバッファをアドレス指定することはできません。また、画面座標はすべて整数で指定しますから、細かいピクセルはアドレス指定できません。
<BR>
</FONT>
<P>
サイクルタイプがG_CYC_FILLに設定される場合、たとえZバッファをクリアしても、レンダリングモードを、zbuffer
に設定しないでください。Zバッファをクリアする時は、メモリエリアをカラーバッファとみなし、メモリに適切なピクセル値を書き込むようになっています。
<BR>
</FONT>
<P>
同様に、サイクルタイプがG_CYC_FILLに設定されている場合は、シザリング長方形は正確なシザリング長方形にはなりません。(それは、4の倍数ピクセルにシザリングします。)したがって、シザリング長方形はG_CYC_FILLモードでレンダリングしたときに塗りつぶされる長方形よりも大きいか、または同じになります。
<BR>
</FONT>
<P>
1サイクルモード(G_CYC_1CYCLE)あるいは2サイクルモード(G_CYC_2CYCLE)でレンダリングする際は、シザリング長方形は正確に長方形をシザリングします。しかしながら,<b>gDPFillRectangle</b>と<b>gsDPFillRectangle</b>マクロは負の引数をとることはできません。長方形の角が画面の左端あるいは上端にある時は(負の値),<b>gDPiScisFillRectangle</b>マクロを使用してください。このマクロは動的に使用する事ができます。静的に使用できるバージョンはありません(すなわち<b>gsDPiScisFillRectangle</b>は存在しません)。
<BR>
</FONT>
<P>
<B>パフォーマンス <BR>
</B>
<P>
長方形については少し制限があります。プリミティブで全画面をフィルするようなものは、明らかに
RDP で最大のレンダー時間を必要とします。長方形のディスプレイリストは非常にコンパクトなので,レンダーに非常に長時間かかる一連のプリミティブで、RSP
とRDP
間の
内部
FIFOをフィルする事ができます。RDP
がこれらのプリミティブをレンダリングしている間、RSPとCPUは、高い優先順位のタスクを実行するためにRDPを停止させたりyieldしたりする命令を垂直リトレース時に受け取ることができなくなります。これは長方形の場合のみで起きます。;全画面をフィルするような三角形は、CPUとRSPを拒否するほど多量の内部
FIFO に適合できないためにこの現象は発生します。
<BR>
</FONT>
<P>
実際には,1/60秒の垂直リトレイス毎のオーディオ処理のような標準的なフレームスケジューリングアルゴリズムを使用する場合は、RDPに連続したフルスクリーンレクタングルを8あるいは9以上送らないでください。ノンフルスクリーンレクタングルや、非連続レクタングルコマンド(間に他のコマンドやNOOPが入っているもの)は問題ありませんし、全てのフレームレンダリング時間が1/60秒を越えないと仮定すると、スケジューリングアルゴリズムは('yieldと同様に')にハンドルされます。
<BR>
</FONT>
<P>
この状況は比較的不自然ですが克服する事は可能です。
RCP の非同期割込の利点を活かすために、この制限を満たしてください。
<BR>
</FONT>
<P>
<B>参照 <BR>
</B>
<P>
<a href="../gdp/gDPSetColor.htm">gDPSetColor(3P)</a>, <a href="gDPSetScissor.htm">gDPSetScissor(3P)</a>, <a href="../gsp/gSPTextureRectangle.htm">gSPTextureRectangle(3P)</a>,
<a href="gDPSetCycleType.htm">gDPSetCycleType(3P)</a><BR>
<BR>
</BODY>
</HTML>