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