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
      アプリケーション定義のクリップ面。
  • ClipIntersection
    現在のクリップ ステータスを記述するクリップ交差フラグです。このメンバーには、ClipUnion と同じフラグを使用できます。

解説 

頂点処理 (IDirect3DDevice9::ProcessVerticesIDirect3DDevice9::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