Microsoft DirectX 8.0 (Visual Basic)

メッシュの使い方

メッシュを最適化するには、Microsoft® Direct3D® のインデックス付き三角形ストリップではなく、インデックス付き三角形を使用する。ハードウェアは、連続する三角形の 95% が実際にストリップを形成しているものとして検出し、それに応じて調整を行う。多くのドライバは、レガシー ハードウェアに対してもこのような処理を行う。

以下に、メッシュのさまざまな属性について示す。

属性 ID

属性 ID は、面のグループを属性グループに関連付ける値である。この ID は、DrawSubset で描画する面のサブセットを記述する。属性 ID は、属性バッファ内の面に対して指定される。属性 ID の実際の値は、32 ビットに適合すればどのような値でもかまわないが、一般には 0 〜 n (属性数) を使用する。

属性バッファ

属性バッファは、各面が属する属性グループを指定する DWORD (各面に 1 つ) の配列である。このバッファは、メッシュの作成時にゼロに初期化されるが、ロード ルーチンによって値を指定するか、ID 0 の属性が複数個必要な場合にはユーザーによって指定するかのいずれかの必要がある。このバッファには、Optimize で属性に基づいてメッシュをソートするために使用する情報が格納される。属性テーブルが提示されていない場合、DrawSubset はこのバッファを調べて、描画する指定の属性の面を選択する。

属性テーブル

属性テーブルは、メッシュによって所有および保持される構造体である。これを生成するには、属性ソート機能または最適化の強化機能を有効にして Optimize を呼び出す必要がある。属性テーブルは、プリミティブを描画する単一の呼び出しを DrawSubset にすばやく初期化するために使用される。また、プログレッシブ メッシュもこの構造体を保持するので、現在の詳細レベル (LOD) でアクティブな面と頂点を表示することができる。