IDirect3DDevice9::DrawTriPatch メソッド

IDirect3DDevice9::DrawTriPatch メソッド

現在設定されているストリームを使って、三角形のパッチを描画する。

構文

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

パラメータ

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

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合の戻り値は次のとおり。

D3DERR_INVALIDCALL メソッドの呼び出しが無効である。たとえば、メソッドのパラメータに無効な値が設定されている場合などである。

注意

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

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

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

参照

高次プリミティブの使い方