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 内容

関連項目

デバイス タイプと頂点処理の要件 (Direct3D 9), 固定機能頂点処理 (Direct3D 9)