IDirect3DDevice9::DrawRectPatch メソッド

IDirect3DDevice9::DrawRectPatch メソッド

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

構文

HRESULT DrawRectPatch(      
    UINT Handle,
    const float* pNumSegs,
    const D3DRECTPATCH_INFO* pRectPatchInfo
);

パラメータ

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

戻り値

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

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

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

注意

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

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

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

参照

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