Microsoft DirectX 8.0 (Visual Basic)

頂点データの処理

Direct3DDevice8 クラスは、ソフトウェアとハードウェア両方での頂点処理をサポートする。一般に、ソフトウェアとハードウェアの頂点処理に関するデバイス能力は同じではない。ハードウェアの能力は、ディスプレイ アダプタやドライバによって異なるが、ソフトウェアの能力は一定である。

次のフラグは、ハードウェア アブストラクション レイヤ (HAL) デバイスおよびリファレンス デバイスの頂点処理動作を制御する。

Direct3D8.CreateDevice を呼び出すときは、いずれかの頂点処理動作フラグを指定する。ミックス モード フラグでは、デバイスはソフトウェアとハードウェア両方の頂点処理が可能になる。1 つのデバイスに対して、一度に 1 つの頂点処理フラグしか設定できない。ピュア デバイス (D3DCREATE_PUREDEVICE) を作成するときは、D3DCREATE_HARDWARE_VERTEXPROCESSING フラグが必要なので注意すること。

単一デバイス上に 2 つの頂点処理能力が存在しないようにするため、実行時にはハードウェア頂点処理能力のみを照会できる。ソフトウェアの頂点処理機能は固定され、実行時に照会することはできない。

デバイスのハードウェア頂点処理能力を判定するには、D3DCAPS8 構造体の VertexProcessingCaps メンバを調べる。ソフトウェア頂点処理については、以下の能力がサポートされている。

また、次の表は、ソフトウェア頂点処理モードのデバイスに対して、D3DCAPS8 構造体のメンバに設定される値を示している。

メンバ ソフトウェア頂点処理能力
MaxActiveLights 制限なし
MaxUserClipPlanes 6
MaxVertexBlendMatrices 4
MaxStreams 16
MaxVertexIndex 0xFFFFFFFF

ソフトウェア頂点処理では、制限なしのライト数やプログラム可能な頂点シェーダなど、保証済みの頂点処理能力セットが提供される。ソフトウェア頂点処理とハードウェア頂点処理は、HAL デバイス (ハードウェア頂点処理とソフトウェア頂点処理の両方をサポートする唯一のデバイス タイプ) を使っていつでも切り替えることができる。唯一の要件として、ソフトウェア頂点処理に使用する頂点バッファは、システム メモリ内に割り当てられていなければならない。

   ハードウェア頂点処理のパフォーマンスは、ソフトウェア頂点処理のパフォーマンスに匹敵する。このため、同一デバイス タイプ内で頂点処理のためのハードウェア エミュレーション機能とソフトウェア エミュレーション機能の両方を提供するとよい。これはラスタ化には適用されない。ラスタ化では、ホスト プロセッサによる処理速度はグラフィックス専用ハードウェアより低速である。したがって、ハードウェア エミュレーションとソフトウェア エミュレーションのラスタ化の両方を単一デバイス タイプ内で提供することはない。単一デバイス内のランタイムとハードウェア (ドライバ) に重複する機能は、ソフトウェア頂点処理のみである。したがって、ほかのデバイス能力はすべて、ドライバによって提供される潜在的に異なる機能である。