次の方法で共有


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

関連項目

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