D3DPRESENT_PARAMETERS構造体
プレゼンテーション パラメーターについて説明します。
構文
typedef struct D3DPRESENT_PARAMETERS {
UINT BackBufferWidth;
UINT BackBufferHeight;
D3DFORMAT BackBufferFormat;
UINT BackBufferCount;
D3DMULTISAMPLE_TYPE MultiSampleType;
DWORD MultiSampleQuality;
D3DSWAPEFFECT SwapEffect;
HWND hDeviceWindow;
BOOL Windowed;
BOOL EnableAutoDepthStencil;
D3DFORMAT AutoDepthStencilFormat;
DWORD Flags;
UINT FullScreen_RefreshRateInHz;
UINT PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;
メンバー
-
BackBufferWidth
-
型: UINT
-
新しいスワップ チェーンのバック バッファーの幅 (ピクセル単位)。 Windowed が FALSE (プレゼンテーションが全画面表示) の場合、この値は EnumAdapterModes で見つかった列挙表示モードの幅と同じである必要があります。 Windowed が TRUE で、BackBufferWidth または BackBufferHeight が 0 の場合、hDeviceWindow のクライアント領域 (または hDeviceWindow が NULL の場合はフォーカス ウィンドウ) の対応するディメンションが取得されます。
-
BackBufferHeight
-
型: UINT
-
新しいスワップ チェーンのバック バッファーの高さ (ピクセル単位)。 Windowed が FALSE (プレゼンテーションが全画面表示) の場合、この値は EnumAdapterModes で見つかった列挙表示モードの 1 つの高さと同じである必要があります。 Windowed が TRUE で、BackBufferWidth または BackBufferHeight が 0 の場合、hDeviceWindow のクライアント領域 (または hDeviceWindow が NULL の場合はフォーカス ウィンドウ) の対応するディメンションが取得されます。
-
BackBufferFormat
-
型: D3DFORMAT
-
バック バッファー形式。 形式の詳細については、「 D3DFORMAT」を参照してください。 この値は、 CheckDeviceType で検証されるレンダー ターゲット形式のいずれかである必要があります。 GetDisplayMode を使用して、現在の形式を取得できます。
実際、ウィンドウ モードでは、 BackBufferFormat にD3DFMT_UNKNOWNを指定できます。 これにより、ランタイムは現在の表示モード形式を使用するように指示され、 GetDisplayMode を呼び出す必要がなくなります。
ウィンドウ化されたアプリケーションの場合、バック バッファー形式は表示モード形式と一致する必要がなくなりました。色変換はハードウェアで実行できるようになりました (ハードウェアが色変換をサポートしている場合)。 可能なバック バッファー形式のセットは制約されますが、ランタイムでは、任意の有効なバック バッファー形式を任意のデスクトップ形式に表示できます。 (デバイスをデスクトップで操作できるという追加の要件があります。通常、デバイスはピクセルモードあたり 8 ビットでは動作しません)。
全画面表示アプリケーションでは、色変換を実行できません。
-
BackBufferCount
-
型: UINT
-
この値は、0 から D3DPRESENT_BACK_BUFFERS_MAX (または Direct3D 9Ex を使用する場合 はD3DPRESENT_BACK_BUFFERS_MAX_EX ) の間にすることができます。 0 の値は 1 として扱われます。 バック バッファーの数を作成できない場合、ランタイムはメソッド呼び出しに失敗し、作成できるバック バッファーの数をこの値に入力します。 その結果、アプリケーションは同じD3DPRESENT_PARAMETERS構造で メソッドを 2 回呼び出し、2 回目に動作することを期待できます。
1 つのバック バッファーを作成できない場合、メソッドは失敗します。 BackBufferCount の値は、許可されるスワップ効果のセットに影響します。 具体的には、スワップ効果D3DSWAPEFFECT_COPY、バック バッファーが 1 つだけ必要です。
-
MultiSampleType
-
D3DMULTISAMPLE_TYPE列挙型のメンバー。 SwapEffect がD3DSWAPEFFECT_DISCARDに設定されていない限り、値はD3DMULTISAMPLE_NONEする必要があります。 マルチサンプリングは、スワップ効果がD3DSWAPEFFECT_DISCARD場合にのみサポートされます。
-
MultiSampleQuality
-
型: DWORD
-
品質レベル。 有効な範囲は、 CheckDeviceMultiSampleType によって使用される pQualityLevels によって返されるレベルより 0 から 1 未満の範囲です。 より大きな値を渡すと、エラー D3DERR_INVALIDCALLが返されます。 レンダー ターゲットまたは深度ステンシル サーフェスと D3DMULTISAMPLE_TYPE のペア値が一致している必要があります。
-
SwapEffect
-
種類: D3DSWAPEFFECT
-
D3DSWAPEFFECT 列挙型のメンバー。 ランタイムは、バッファー スワップ動作に関する暗黙的なセマンティクスを保証します。したがって、 Windowed が TRUE でSwapEffect がD3DSWAPEFFECT_FLIPに設定されている場合、ランタイムは追加のバック バッファーを 1 つ作成し、プレゼンテーション時にフロント バッファーになる方をコピーします。
D3DSWAPEFFECT_COPY、 BackBufferCount を 1 に設定する必要があります。
D3DSWAPEFFECT_DISCARDは、バッファーが表示された後にノイズを埋めることで、デバッグ ランタイムに適用されます。
Direct3D9 と Direct3D9Ex の違い:
- Direct3D9Ex では、アプリケーションが反転モードを採用するタイミングを指定するために、D3DSWAPEFFECT_FLIPEXが追加されます。 つまり、アプリケーションのフレームは、(コピーされるのではなく) ウィンドウのモードでデスクトップ ウィンドウ マネージャー (DWM) に渡されてコンポジションされます。 フリップ モードは、より効率的なメモリ帯域幅を提供し、アプリケーションが全画面表示の統計を利用できるようにします。 全画面表示の動作は変更されません。 反転モードの動作は、Windows 7 以降で使用できます。
-
hDeviceWindow
-
種類: HWND
-
デバイス ウィンドウは、画面上のバック バッファーの場所とサイズを決定します。 これは、バック バッファーの内容が Present の間にフロント バッファーにコピーされるときに Direct3D によって使用されます。
全画面表示アプリケーションの場合、これは上部のウィンドウ (フォーカス ウィンドウ) へのハンドルです。
複数の全画面表示デバイス (マルチモニター システムなど) を使用するアプリケーションの場合、1 つのデバイスでフォーカス ウィンドウをデバイス ウィンドウとして使用できます。 その他のすべてのデバイスには、一意のデバイス ウィンドウが必要です。
ウィンドウ モード アプリケーションの場合、このハンドルは Present の既定のターゲット ウィンドウになります。 このハンドルが NULL の場合、フォーカス ウィンドウが取得されます。
ユーザーによるウィンドウ サイズの変更を反映しようとしても、ランタイムによって試行されない点に注意してください。 このウィンドウがリセットされると、バック バッファーは暗黙的にリセットされません。 ただし、 Present メソッドは、ウィンドウの位置の変更を自動的に追跡します。
-
ウィンドウ
-
種類: BOOL
-
アプリケーションがウィンドウで実行される場合は TRUE。アプリケーションが全画面表示で実行される場合は FALSE。
-
EnableAutoDepthStencil
-
種類: BOOL
-
この値が TRUE の場合、Direct3D はアプリケーションの深度バッファーを管理します。 デバイスは、作成時に深度ステンシル バッファーを作成します。 深度ステンシル バッファーは、デバイスのレンダー ターゲットとして自動的に設定されます。 デバイスがリセットされると、深度ステンシル バッファーが自動的に破棄され、新しいサイズで再作成されます。
EnableAutoDepthStencil が TRUE の場合、AutoDepthStencilFormat は有効な深度ステンシル形式である必要があります。
-
AutoDepthStencilFormat
-
型: D3DFORMAT
-
D3DFORMAT 列挙型のメンバー。 デバイスが作成する自動深度ステンシル サーフェスの形式。 EnableAutoDepthStencil が TRUE でない限り、このメンバーは無視されます。
-
Flags
-
型: DWORD
-
D3DPRESENTFLAG クラスの定数の 1 つ。
-
FullScreen_RefreshRateInHz
-
型: UINT
-
ディスプレイ アダプターが画面を更新する速度。 値は、アプリケーションが実行されているモードによって異なります。
- ウィンドウ モードの場合、更新レートは 0 である必要があります。
- 全画面表示モードの場合、更新レートは EnumAdapterModes によって返される更新レートの 1 つです。
-
PresentationInterval
-
型: UINT
-
スワップ チェーンのバック バッファーをフロント バッファーに提示できる最大レート。 サポートされているモードと間隔の詳細については、「 D3DPRESENT」を参照してください。
要件
要件 | 値 |
---|---|
ヘッダー |
|
こちらもご覧ください