D3DPRESENT_PARAMETERS
プレゼンテーション パラメータを記述する。
typedef struct _D3DPRESENT_PARAMETERS_ {
UINT BackBufferWidth;
UINT BackBufferHeight;
D3DFORMAT BackBufferFormat;
UINT BackBufferCount;
D3DMULTISAMPLE_TYPE MultiSampleType;
D3DSWAPEFFECT SwapEffect;
HWND hDeviceWindow;
BOOL Windowed;
BOOL EnableAutoDepthStencil;
D3DFORMAT AutoDepthStencilFormat;
DWORD Flags;
UINT FullScreen_RefreshRateInHz;
UINT FullScreen_PresentationInterval;
} D3DPRESENT_PARAMETERS;
メンバ
- BackBufferWidth および BackBufferHeight
- 新しいスワップ チェーンのバック バッファの幅と高さ (ピクセル単位)。Windowed が FALSE の場合 (プレゼンテーションはフルスクリーン)、これらの値は、IDirect3D8::EnumAdapterModes によって列挙されたディスプレイ モードのいずれかの幅および高さと一致していなければならない。Windowed が TRUE で、これらの値のいずれかが 0 の場合は、hDeviceWindow (または hDeviceWindow が NULL の場合はフォーカス ウィンドウ) のクライアント領域の対応するディメンジョンが使用される。
- BackBufferFormat
- D3DFORMAT 列挙型のメンバ。この値は、IDirect3D8::CheckDeviceType で検証されたレンダリング ターゲットのフォーマットのいずれかでなければならない。
Windowed を TRUE に設定する場合、BackBufferFormat の設定は、現在のディスプレイ モードのフォーマットと一致している必要がある。IDirect3DDevice8::GetDisplayMode を使用して、現在のフォーマットを取得する。
- BackBufferCount
- この値には、0、1、2、または 3 を設定できる。0 は 1 として処理されることに注意する。バック バッファの数を作成できない場合、ランタイムはメソッドの呼び出しに失敗し、作成できたバック バッファ数をこの値に設定する。したがって、アプリケーションは同じ D3DPRESENT_PARAMETERS 構造体を指定してメソッドを 2 回呼び出すことができ、2 回目には呼び出しが成功するものと予想される。
バック バッファの数の最小値は 1 と想定されている。バック バッファを 1 つも作成できない場合、メソッドの呼び出しは失敗する。BackBufferCount の値は、使用可能なスワップ エフェクトのセットに影響を与える。特に、D3DSWAPEFFECT_COPY スワップ エフェクトでは、存在するバック バッファが厳密に 1 つでなければならない。
- MultiSampleType
- D3DMULTISAMPLE_TYPE 列挙型のメンバ。SwapEffect に D3DSWAPEFFECT_DISCARD が設定されていない場合、この値は D3DMULTISAMPLE_NONE でなければならない。マルチサンプリングは、スワップ エフェクトが D3DSWAPEFFECT_DISCARD の場合にのみサポートされる。
- SwapEffect
- D3DSWAPEFFECT 列挙型のメンバ。ランタイムは、バッファ スワップ動作に関して指定されているセマンティクスを保証する。したがって、Windowed が TRUE で、SwapEffect が D3DSWAPEFFECT_FLIP に設定されている場合、ランタイムは 1 つ余分にバック バッファを作成し、プレゼンテーション時にフロント バッファになるものをすべてコピーする。
D3DSWAPEFFECT_COPY および D3DSWAPEFFECT_COPY_VSYNC の場合は、BackBufferCount に 1 が設定されていなければならない。
デバッグ ランタイムにおいては、提示した後のバッファにノイズを格納することで、D3DSWAPEFFECT_DISCARD を強制する。
- hDeviceWindow
- フルスクリーン モードの場合、これはカバー ウィンドウである。ウィンドウ モードの場合、これは IDirect3DDevice8::Present に対するデフォルトのターゲット ウィンドウである。この値が NULL の場合は、フォーカス ウィンドウが使用される。マルチモニタ システムなど、複数のフルスクリーン デバイスを使用するアプリケーションの場合は、正確に 1 つのデバイスがデバイス ウィンドウとしてフォーカス ウィンドウを使用しなければならない。その他のすべてのウィンドウは、一意のデバイス ウィンドウを持つ。それ以外の場合は、動作は定義されておらず、アプリケーションは期待どおりに動作しない。
ランタイムはユーザーによるウィンドウ サイズの変更を反映しようとしないことに、注意する必要がある。このウィンドウがリセットされても、バック バッファが暗黙的にリセットされることはない。ただし、Present メソッドは、ウィンドウ位置の変化を自動的に追跡する。
- Windowed
- アプリケーションがウィンドウ モードで動作する場合は TRUE で、フルスクリーン モードで動作する場合は FALSE である。
- EnableAutoDepthStencil
- この値が TRUE の場合、Microsoft® Direct3D® はアプリケーションに対する深度バッファを管理する。デバイスは、作成されると、深度ステンシル バッファを作成する。深度ステンシル バッファは、自動的に、デバイスのレンダリング ターゲットとして設定される。デバイスがリセットされると、深度ステンシル バッファは自動的に破棄されて、新しいサイズで再度作成される。
EnableAutoDepthStencil が TRUE の場合、AutoDepthStencilFormat は有効な深度ステンシル フォーマットでなければならない。
- AutoDepthStencilFormat
- D3DFORMAT 列挙型のメンバ。デバイスが作成する自動深度ステンシル サーフェスのフォーマットである。EnableAutoDepthStencil が TRUE でない場合、このメンバは無視される。
- Flags
- このメンバは、0 または次のフラグに設定できる。
- D3DPRESENTFLAG_LOCKABLE_BACKBUFFER
- アプリケーションがバック バッファを直接ロックする必要がある場合は、このフラグを設定する。IDirect3D8::CreateDevice または IDirect3DDevice8::Reset を呼び出す際に、D3DPRESENTFLAG_LOCKABLE_BACKBUFFER を指定していない場合は、バック バッファはロックできないことに注意する。ロック可能なバック バッファによって、一部のグラフィックス ハードウェア構成ではパフォーマンスのコストが向上する。
ロック可能なバック バッファでロック処理を実行すると (または読み書きに IDirect3DDevice8::CopyRects を使用すると)、多くのカードでパフォーマンスが低下する。この場合、テクスチャ化した三角形を使用してデータをバック バッファに移動することを検討する必要がある。
- FullScreen_RefreshRateInHz
- ディスプレイ アダプタによるスクリーンのリフレッシュ レート。ウィンドウ モードの場合、この値は 0 でなければならない。それ以外の場合、この値は、IDirect3D8::EnumAdapterModes が返すリフレッシュ レートのいずれか、または次の値のいずれかでなければならない。
- D3DPRESENT_RATE_DEFAULT
- ランタイムはプレゼンテーション速度を選択する。ウィンドウ モードの場合は、現在の速度を使用する。
- D3DPRESENT_RATE_UNLIMITED
- プレゼンテーション速度は、ハードウェアがフレームを提供できる速さで動作する。
- FullScreen_PresentationInterval
- スワップ チェーンのバック バッファをプレゼンテーションできる最大レート。ウィンドウ スワップ チェーンの場合、この値は D3DPRESENT_INTERVAL_DEFAULT (0) でなければならない。フルスクリーン スワップ チェーンの場合は、D3DPRESENT_INTERVAL_DEFAULT、または D3DCAPS8 の PresentationIntervals メンバに列挙されるフラグに対応する値を設定できる。
- D3DPRESENT_INTERVAL_IMMEDIATE
- プレゼンテーション処理に直接影響する場合がある。ドライバは垂直帰線間隔を待たない。
- D3DPRESENT_INTERVAL_ONE
- ドライバは垂直帰線間隔を待つ。プレゼンテーション処理への影響は、スクリーン リフレッシュほど頻繁ではない。
- D3DPRESENT_INTERVAL_TWO
- ドライバは垂直帰線間隔を待つ。プレゼンテーション処理への影響は、スクリーン リフレッシュ (1 回おき) ほど頻繁ではない。
- D3DPRESENT_INTERVAL_THREE
- ドライバは垂直帰線間隔を待つ。プレゼンテーション処理への影響は、スクリーン リフレッシュ (2 回おき) ほど頻繁ではない。
- D3DPRESENT_INTERVAL_FOUR
- ドライバは垂直帰線間隔を待つ。プレゼンテーション処理への影響は、スクリーン リフレッシュ (3 回おき) ほど頻繁ではない。
ヘッダー : D3d8types.h で宣言。
参照
IDirect3D8::CreateDevice、IDirect3DDevice8::CreateAdditionalSwapChain、IDirect3DDevice8::Present、IDirect3DDevice8::Reset