IDirect3DDevice9::ProcessVertices
頂点シェーダーで定義された頂点処理を入力データ ストリームのセットに適用し、インターリーブされた頂点データの 1 つのストリームをデスティネーション頂点バッファー内に生成します。
HRESULT
ProcessVertices(
UINT SrcStartIndex,
UINT DestIndex,
UINT VertexCount,
IDirect3DVertexBuffer9 * pDestBuffer,
IDirect3DVertexDeclaration9* pVertexDecl,
DWORD Flags
);
パラメータ
- SrcStartIndex
ロードする最初の頂点のインデックス。 - DestIndex
結果が配置されるデスティネーション頂点バッファーの最初の頂点のインデックス。 - VertexCount
処理する頂点の数です。 - pDestBuffer
インターリーブされた頂点データのストリームを表すデスティネーション頂点バッファーである IDirect3DVertexBuffer9 インターフェイスへのポインター。 - pVertexDecl
出力頂点データ宣言を表す IDirect3DVertexDeclaration9 インターフェイスへのポインターです。頂点シェーダー 3.0 以上を現在の頂点シェーダーとして設定するときは、出力頂点宣言がある必要があります。 - Flags
処理オプションです。既定の処理には、この値を 0 に設定します。システムで頂点操作により影響を受けない頂点データをデスティネーション バッファーにコピーしないようにするには、D3DPV_DONOTCOPYDATA に設定します。D3DPV_DONOTCOPYDATA 値を、デスティネーション バッファーに適した 1 つ以上の D3DLOCK 値と組み合わせることもできます。
戻り値
メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、D3DERR_INVALIDCALL を返します。
解説
このメソッドの操作の順序は、次のとおりです。
- ワールド + ビュー + 射影行列を使用して頂点を射影空間に変換します。
- ビューポート設定を使用してスクリーン座標を計算します。
- クリップを有効にした場合、クリップ コードを計算して、デスティネーション頂点バッファーに関連付けられた内部バッファーに格納します。頂点が視錐台の内側にある場合は、スクリーン座標が計算されます。頂点が視錐台の外側にある場合は、頂点は射影空間座標のデスティネーション頂点バッファーに格納されます。
- その他の注意事項:ユーザーは内部クリップ コード バッファーにアクセスできません。三角形や他のプリミティブでは、クリップは行われません。
デスティネーション頂点バッファー、pDestBuffer は IDirect3DDevice9::CreateVertexBuffer でゼロ以外の FVF パラメーターを使用して作成される必要があります。IDirect3DDevice9::CreateVertexBuffer メソッドへの呼び出しの間に指定された FVF コードは、デスティネーション頂点バッファーにある頂点要素を指定します。
Direct3D でテクスチャー座標を生成したり、入力テクスチャー座標のコピーまたは変換を行うときに、Direct3D が生成するテクスチャー座標成分よりも多くのテクスチャー座標成分を出力テクスチャー座標フォーマットで定義すると、Direct3D はこれらの追加の成分を変更しません。
要件
ヘッダー: D3D9.h 宣言
ライブラリ: D3D9.lib 内容