gbi.htm
2.12 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
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<B>gbi<BR>
</B>
<P>
<B>関数名 <BR>
</B>
<P>
gbi
<P>
→ グラフィックバイナリインタフェース<BR>
<P>
<B>構文<BR>
</B>
<P>
グラフィックバイナリインタフェースはグラフィックディスプレイリストを構築するためにインクルードファイルgbi.h中にマクロ定義されています。
<BR>
<P>
マクロ形式(g*、gs*)<BR>
<P>
<B>説明<BR>
</B>
<P>
<B>gbi</B>(グラフィックバイナリインタフェース)はRSPのジオメトリエンジンあるいはRDPハードウェアによって直接解釈される64ビットのコマンド群です。APIとして提供されるマクロは、実際のgbiのビットストリーム列をパッキングする非常に便利なツールです。
<BR>
<P>
各コマンドには2タイプのマクロ(g*とgs*マクロ)があります。gs*マクロはスタティックなグラフィックマクロを表し、初期化されたC言語の構造体を使用しているスタティックなグラフィックディスプレイリストを定義するのに使用されます。
<BR>
<P>
g*マクロは実行時のディスプレイリストの構築に使用されます。g*マクロは、gs*マクロの引数の前にディスプレイリストのポインタを持っています。このディスプレイリストポインタは常に`glistp++'形式であるべきです。1ワードを生成するマクロに対しては、インクリメント操作でポインタが次の位置に移動します。複数のワードを生成(複数のgbiコマンドに展開)するマクロは、
呼び出し側がディスプレイリストポインタをインクリメントするという規則に依存しています。
<BR>
<P>
マクロには、3番目のタイプgd* が存在します。これらのマクロはgbiデータ構造体を定義するために使用されます。
<BR>
<P>
これらのマクロはRSPジオメトリエンジンの多くの最適化を隠しています。マニュアルでは、これらのマクロを、アプリケーションプログラムに必要なAPIとして記述している;gbiビットストリームを(例えばC/C++以外の言語でプログラムするために)完全に理解するためには、各コマンドが要求する緻密なビットパッキングを定義しているマクロの詳細を習熟する必要があります。
<BR>
<P>
<B>データ構造<BR>
</B>
<P>
あらかじめ定義されたgbiデータ構造体はデータは64ビット境界でなければなりません。ディスプレイリストの受信に使用するRSP内部のマイクロコードを含め、すべてのDMAエンジンが64ビット境界のアドレスを要求します。
<BR>
</BODY>
</HTML>