次の方法で共有


FVF 頂点バッファー (Direct3D 9)

IDirect3DDevice9::CreateVertexBuffer メソッドの FVF パラメーターを 0 ではない有効な FVF コードに設定すると、バッファーの内容が FVF コードで特性付けられます。FVF コードを使用して作成された頂点バッファーは、FVF 頂点バッファーと呼ばれます。IDirect3DDevice9 のメソッドや使用方法の中には、FVF 頂点バッファーを必要とするものと、非 FVF 頂点バッファーを必要とするものがあります。FVF 頂点バッファーは、IDirect3DDevice9::ProcessVertices のデスティネーション頂点バッファー引数として必要です。

FVF 頂点バッファーは、任意のストリーム番号のソース データ ストリームにバインドできます。

FVF 頂点バッファーに D3DFVF_XYZRHW コンポーネントが存在する場合は、そのバッファー内の頂点が処理済みであることを示します。IDirect3DDevice9::ProcessVertices のデスティネーション頂点バッファーに使用される頂点バッファーは、ポストプロセッシングを行う必要があります。固定機能シェーダーの入力に使用される頂点バッファーは、プリプロセッシングまたはポストプロセッシングのいずれでもかまいません。頂点バッファーがポストプロセッシングされる場合、シェーダーはバイパスされ、データは直接プリミティブ クリッピングおよびセットアップ モジュールに渡されます。

FVF 頂点バッファーは、頂点シェーダーで使用することができます。また、頂点ストリームは非 FVF 頂点バッファーで可能な頂点フォーマットと同じフォーマットを表現できます。別々の頂点バッファーからデータを入力する際に、これらの異なるバッファーを使用する必要はありません。新しい頂点ストリームはより柔軟性が高いため、データを個別に保持する必要のあるアプリケーションではパフォーマンスが向上しますが、このストリームの使用は必須ではありません。アプリケーションがインターリーブされたデータを事前に保持することができる場合は、それでパフォーマンスは向上します。アプリケーションが各レンダリング呼び出しの前にのみデータをインターリーブする場合は、API またはハードウェアが複数のストリームを使用してこの処理を実行できるようにする必要があります。

頂点のパフォーマンスで最も重要なことは、32 バイトの頂点を使用し、適切なキャッシュ順序を維持することです。