次の方法で共有


FVF 頂点バッファ

FVF 頂点バッファ

有効な柔軟な頂点フォーマット (FVF) コードで IDirect3DDevice9::CreateVertexBuffer の FVF 引数をゼロ以外の値に設定すると、バッファの内容は FVF コードによって特性付けられる。FVF コードで作成された頂点バッファは、FVF 頂点バッファと呼ばれる。IDirect3DDevice9 のメソッドや使用によっては、FVF 頂点バッファを必要とする場合と非 FVF 頂点バッファを必要とする場合がある。FVF 頂点バッファは、IDirect3DDevice9::ProcessVertices の転送先頂点バッファ引数として必要である。

FVF 頂点バッファは、任意のストリーム番号の転送元データ ストリームにバインドできる。ただし、FVF 頂点バッファは、プログラミングされた頂点シェーダへの入力として使用することはできない。

FVF 頂点バッファに D3DFVF_XYZRHW コンポーネントがある場合は、そのバッファ内の頂点が処理されていることを示す。IDirect3DDevice9::ProcessVertices 転送先頂点バッファに使われる頂点バッファは、処理後の頂点バッファでなければならない。固定機能シェーダの入力に使用される頂点バッファは、処理前でも処理後でもかまわない。頂点バッファが処理後の場合には、シェーダはバイパスされ、プリミティブ クリッピングおよびセットアップ モジュールに直接データが渡される。

FVF 頂点バッファは、頂点シェーダと共に使用することができる。また、頂点ストリームは、非 FVF 頂点バッファが表すことのできる頂点フォーマットと同じ頂点フォーマットを表すことができる。別の頂点バッファからのデータを入力するために使用する必要はない。新しい頂点ストリームが持つ柔軟性により、データを別に維持する必要のあるアプリケーションでは、より高速な処理が行えるようになるが、これは必須ではない。アプリケーションがあらかじめインターリーブされたデータを保持できる場合は、パフォーマンスが向上する。アプリケーションが各レンダリング呼び出しの前にデータをインターリーブするだけの場合は、アプリケーション プログラミング インターフェイス (API) またはハードウェアに複数のストリームでこの処理を行わせなければならない。

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