Microsoft DirectX 8.0 (Visual Basic)

パッチの描画

次のメソッドを使って、Microsoft® Direct3D® for Microsoft DirectX® 8.0 でパッチを描画できる。

DrawRectPatch は、現在設定されているストリームを使って、Surface パラメータで指定された四角形高次パッチを描画する。Handle パラメータは、パッチとハンドルを関連付けるために使用される。このため、次にパッチが描画される際は、Surface を指定し直す必要がない。これにより、順方向差異係数またはその他の情報を事前に計算してキャッシュすることができ、その結果、同じハンドルを使ったその後の DrawRectPatch への呼び出しが効率的に実行される。

静的パッチについては、アプリケーションが頂点シェーダと適切なストリームを設定し、Surface パラメータ内にパッチ情報を提供し、ハンドルを指定することで、Direct3D が情報をキャプチャしキャッシュできるようにされている。アプリケーションはその後 Surface が ByVal 0 に設定された状態で DrawRectPatch を呼び出すことにより、パッチを効率的に描画できる。キャッシュされたパッチを描画するときは、現在設定されているストリームは無視される。ただし、NumSegments に新しい値を指定して、キャッシュされた NumSegments を上書きできる。また、キャッシュされたパッチをレンダリングする場合は、そのパッチがキャッシュされたときと同じ頂点シェーダを設定する必要がある。

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

同じハンドルに Surface を指定し直すことで、アプリケーションは前回キャッシュした情報を上書きすることができる。

NumSegments が ByVal 0 に設定されている場合は、テッセレータは D3DRS_PATCHSEGMENTS を使ってテッセレーションの量を制御する。この場合は、当然、すべての辺に同じテッセレーションが使用される。N パッチには特別なメソッドはない。テッセレーションは、D3DRS_PATCHSEGMENTS によって制御される。法線を指定する必要がある。

DrawTriPatchDrawRectPatch に似ているが、三角形高次パッチを描画する点が異なる。