IDirect3DDevice9::GetClipStatus
クリップ ステータスを取得します。
HRESULT
GetClipStatus(
D3DCLIPSTATUS9 * pClipStatus
);
パラメータ
- pClipStatus
クリップ ステータスを表す D3DCLIPSTATUS9 構造体へのポインターです。
戻り値
メソッドが成功した場合は、D3D_OK を返します。
引数が無効な場合は、D3DERR_INVALIDCALL が返されます。
解説
頂点処理 (IDirect3DDevice9::ProcessVertices、IDirect3DDevice9::DrawPrimitive、またはその他の描画関数による) の実行中にクリッピングが有効になると、Direct3D はすべての頂点に対してクリップ コードを計算します。このクリップ コードは、D3DCS_* ビットの組み合わせです。特定のクリップ面の外部に頂点がある場合は、それに対応するビットがクリップ コードに設定されます。Direct3D は D3DCLIPSTATUS9 (ClipUnion と ClipIntersection メンバーを持つ) を使ってクリップ ステータスを保持します。ClipUnion はすべての頂点クリップ コードのビット演算 "OR" であり、ClipIntersection はすべての頂点クリップ コードのビット演算 "AND" です。ClipUnion の初期値はゼロ、ClipIntersection の初期値は 0xFFFFFFFF です。D3DRS_CLIPPING が FALSE に設定されている場合、ClipUnion と ClipIntersection はゼロに設定されます。Direct3D は、描画呼び出し中にクリップ ステータスを更新します。特定のオブジェクトのクリップ ステータスを計算するには、ClipUnion と ClipIntersection をそれぞれの初期値に設定し、描画を続けます。
クリップ ステータスは、IDirect3DDevice9::DrawRectPatch および IDirect3DDevice9::DrawTriPatch によって更新されません。それらのソフトウェア エミュレーションが存在しないからです。
クリップ ステータスはソフトウェア頂点処理中に使用されます。このため、このメソッドはピュア ハードウェア処理デバイスやノンピュア ハードウェア処理デバイスではサポートされません。ピュア デバイスについては、「D3DCREATE」を参照してください。
要件
ヘッダー: D3D9.h 宣言
ライブラリ: D3D9.lib 内容