D3DCLIPSTATUS9
現在のクリップ ステータスを記述します。
typedef struct D3DCLIPSTATUS9 {
DWORD ClipUnion;
DWORD ClipIntersection;
} D3DCLIPSTATUS9, *LPD3DCLIPSTATUS9;
メンバ
- ClipUnion
現在のクリップ ステータスを記述するクリップ連結フラグです。このメンバーには、次のフラグから 1 つ以上を設定できます。- D3DCS_ALL
すべてのクリップ フラグの組み合わせ。 - D3DCS_LEFT
すべての頂点が、視錐台の左側面によってクリップされる。 - D3DCS_RIGHT
すべての頂点が、視錐台の右側面によってクリップされる。 - D3DCS_TOP
すべての頂点が、視錐台の上面によってクリップされる。 - D3DCS_BOTTOM
すべての頂点が、視錐台の底面によってクリップされる。 - D3DCS_FRONT
すべての頂点が、視錐台の前面によってクリップされる。 - D3DCS_BACK
すべての頂点が、視錐台の背面によってクリップされる。 - D3DCS_PLANE0
アプリケーション定義のクリップ面。 - D3DCS_PLANE1
アプリケーション定義のクリップ面。 - D3DCS_PLANE2
アプリケーション定義のクリップ面。 - D3DCS_PLANE3
アプリケーション定義のクリップ面。 - D3DCS_PLANE4
アプリケーション定義のクリップ面。 - D3DCS_PLANE5
アプリケーション定義のクリップ面。
- D3DCS_ALL
- ClipIntersection
現在のクリップ ステータスを記述するクリップ交差フラグです。このメンバーには、ClipUnion と同じフラグを使用できます。
解説
頂点処理 (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 によって更新されません。それらのソフトウェア エミュレーションが存在しないからです。
要件
ヘッダー: D3D9Types.h 宣言
関連項目
IDirect3DDevice9::GetClipStatus, IDirect3DDevice9::SetClipStatus, IDirect3DDevice9::SetClipStatus