頂点データの処理 (Direct3D 9)
IDirect3DDevice9 インターフェイスは、ソフトウェアとハードウェアの両方で頂点処理をサポートします。 一般に、ソフトウェアとハードウェアの頂点処理のデバイス機能は同じではありません。 ハードウェア機能は、ディスプレイ アダプターとドライバーによって異なりますが、ソフトウェア機能は固定されています。
次のフラグは、ハードウェア抽象化レイヤー (HAL) および参照デバイスの頂点処理動作を制御します。
- D3DCREATE_SOFTWARE_VERTEXPROCESSING
- D3DCREATE_HARDWARE_VERTEXPROCESSING
- D3DCREATE_MIXED_VERTEXPROCESSING
IDirect3D9::CreateDevice を呼び出すときに、頂点処理動作フラグのいずれかを指定します。 混合モード フラグを使用すると、デバイスはソフトウェアとハードウェアの両方の頂点処理を実行できます。 1 つのデバイスに対して一度に設定できる頂点処理フラグは 1 つだけです。 純粋なデバイス (D3DCREATE_PUREDEVICE) を作成するときは、D3DCREATE_HARDWARE_VERTEXPROCESSING フラグを設定する必要があることに注意してください。
1 つのデバイスでデュアル頂点処理機能を回避するために、実行時に照会できるのはハードウェア頂点処理機能のみです。 ソフトウェア頂点処理機能は固定されており、実行時にクエリを実行することはできません。
D3DCAPS9 構造体の VertexProcessingCaps メンバーは、デバイスのハードウェア頂点処理機能を決定します。
ソフトウェア頂点処理では、次の機能がサポートされています。
- D3DVTXPCAPS のD3DVTXPCAPS_DIRECTIONALLIGHTS メンバー
- D3DVTXPCAPS のD3DVTXPCAPS_LOCALVIEWER メンバー
- D3DVTXPCAPS のD3DVTXPCAPS_MATERIALSOURCE7 メンバー
- D3DVTXPCAPS のD3DVTXPCAPS_POSITIONALLIGHTS メンバー
- D3DVTXPCAPS のD3DVTXPCAPS_TEXGEN メンバー
- D3DVTXPCAPS のD3DVTXPCAPS_TWEENING メンバー
さらに、次の表に、ソフトウェア頂点処理モードのデバイスの D3DCAPS9 構造体のメンバーに設定される値を示します。
メンバー | ソフトウェア頂点処理機能 |
---|---|
MaxActiveLights | 無制限 |
MaxUserClipPlanes | 6 |
MaxVertexBlendMatrices | 4 |
MaxStreams | 16 |
MaxVertexIndex | 0xFFFFFFFF |
一般に、頂点処理がバインドされているアプリケーションでは、HAL デバイスを使用する必要があります。 ソフトウェア頂点処理は、無制限のライト数やプログラム可能な頂点シェーダーの完全なサポートなど、頂点処理機能の保証されたセットを提供します。 HAL デバイス (ハードウェアとソフトウェアの両方の頂点処理をサポートする唯一のデバイスの種類) を使用する場合は、いつでもソフトウェアとハードウェアの頂点処理を切り替えることができます。 唯一の要件は、ソフトウェア頂点処理に使用される頂点バッファーをシステム メモリに割り当てる必要があるということです。
関連トピック