IDirect3DDevice9::DrawRectPatch
現在設定されているストリームを使って、矩形のパッチを描画します。
HRESULT
DrawRectPatch(
UINT Handle,
const float* pNumSegs,
const D3DRECTPATCH_INFO* pRectPatchInfo
);
パラメータ
- Handle
描画する矩形のパッチへのハンドル - pNumSegs
テッセレーションの際に、矩形パッチの各エッジを分割するセグメントの数を示す、4 つの浮動小数点値の配列へのポインター。「D3DRECTPATCH_INFO」を参照してください。 - pRectPatchInfo
描画する矩形のパッチを記述する D3DRECTPATCH_INFO 構造体へのポインターです。
戻り値
メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、D3DERR_INVALIDCALL を返します。
解説
静的パッチの場合、Direct3D が情報をキャプチャーしてキャッシュできるよう、頂点シェーダーを設定し、適切なストリームを設定し、pRectPatchInfo パラメーターにパッチ情報を指定し、ハンドルを指定します。その後、pRectPatchInfo を使用した IDirect3DDevice9::DrawRectPatch の呼び出しは NULL に設定され、パッチが効率的に描画されます。キャッシュされているパッチを描画するときは、現在設定されているストリームは無視されます。キャッシュされている pNumSegs を上書きするには、pNumSegs に新しい値を指定します。キャッシュされているパッチをレンダリングするときは、キャプチャー時に設定した頂点シェーダーと同じ頂点シェーダーを設定する必要があります。
ハンドルを使用して IDirect3DDevice9::DrawRectPatch を呼び出すと、その前の IDirect3DDevice9::DrawTriPatch の呼び出しでキャッシュされた同じハンドルが無効になります。
動的パッチについては、パッチのレンダリングごとにパッチ データが変化するため、情報をキャッシュすることは効率的ではありません。アプリケーションは、Handle を 0 に設定することで、この情報を Direct3D に伝えることができます。この場合、Direct3D は、現在設定されているストリームおよび pNumSegs 値を使ってパッチを描画し、情報のキャッシュを行いません。Handle を 0 に設定した状態で pRectPatchInfo を NULL に設定すると無効になります。
要件
ヘッダー: D3D9.h 宣言
ライブラリ: D3D9.lib 内容