次の方法で共有


IDirect3DDevice9::DrawTriPatch

現在設定されているストリームを使って、トライアングル パッチを描画します。

HRESULT 
DrawTriPatch(
  UINT Handle,
  const float* pNumSegs,
  const D3DTRIPATCH_INFO* pTriPatchInfo
);

パラメータ

  • Handle
    描画するトライアングル パッチへのハンドル
  • pNumSegs
    テッセレーションの際に、トライアングル パッチの各エッジを分割するセグメントの数を示す、3 つの浮動小数点値の配列へのポインター。「D3DTRIPATCH_INFO」を参照してください。
  • pTriPatchInfo
    描画する三角形の高次パッチを記述する D3DTRIPATCH_INFO 構造体へのポインターです。

戻り値

メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、D3DERR_INVALIDCALL を返します。

解説 

静的パッチの場合、Direct3D が情報をキャプチャーしてキャッシュできるよう、頂点シェーダーを設定し、適切なストリームを設定し、pTriPatchInfo パラメーターにパッチ情報を指定し、ハンドルを指定します。パッチを効率的に描画するには、pTriPatchInfo を NULL に設定して IDirect3DDevice9::DrawTriPatch を呼び出します。キャッシュされているパッチを描画するときは、現在設定されているストリームは無視されます。キャッシュされている pNumSegs を上書きするには、pNumSegs に新しい値を指定します。キャッシュされているパッチをレンダリングするときは、キャプチャー時に設定した頂点シェーダーと同じ頂点シェーダーを設定する必要があります。

ハンドルを使用して IDirect3DDevice9::DrawTriPatch を呼び出すと、その前の IDirect3DDevice9::DrawRectPatch の呼び出しでキャッシュされた同じハンドルが無効になります。

動的パッチについては、パッチのレンダリングごとにパッチ データが変化するため、情報をキャッシュすることは効率的ではありません。アプリケーションは、Handle を 0 に設定することで、この情報を Direct3D に伝えることができます。この場合、Direct3D は、現在設定されているストリームおよび pNumSegs 値を使ってパッチを描画し、情報のキャッシュを行いません。Handle を 0 に設定した状態で pTriPatchInfo を NULL に設定すると無効になります。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容

関連項目

高次プリミティブの使い方 (Direct3D 9)