D3DPRESENT_PARAMETERS 構造体
D3DPRESENT_PARAMETERS 構造体
プレゼンテーション パラメータを記述する。
構文
typedef struct _D3DPRESENT_PARAMETERS_ {
UINT BackBufferWidth, 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;
メンバ
BackBufferWidth, BackBufferHeight
新しいスワップ チェーンのバック バッファの幅と高さ (ピクセル単位)。Windowed が FALSE (プレゼンテーションはフルスクリーン) の場合、これらの値は、IDirect3D9::EnumAdapterModes によって列挙されたディスプレイ モードのいずれかの幅および高さと一致していなければならない。Windowed が TRUE で、これらの値のいずれかが 0 の場合は、hDeviceWindow (または hDeviceWindow が NULL の場合はフォーカス ウィンドウ) のクライアント領域に対応したディメンジョンが使用される。BackBufferFormat
バック バッファのフォーマット。フォーマットの詳細については、「D3DFORMAT」を参照すること。この値は、IDirect3D9::CheckDeviceType で検証されたレンダリング ターゲットのフォーマットのいずれかでなければならない。現在のフォーマットは、IDirect3DDevice9::GetDisplayMode を使って取得できる。実際に、ウィンドウ モードでも BackBufferFormat に D3DFMT_UNKNOWN を指定できる。これにより、ランタイムに、現在のディスプレイモード フォーマットを使うことで、IDirect3DDevice9::GetDisplayMode を呼び出す必要をなくすよう通知する。
ウィンドウ アプリケーションでは、バック バッファ フォーマットがディスプレイ モード フォーマットと必ずしも一致する必要はない。 これは、ハードウェアが色変換をサポートしている場合、ハードウェアで色変換を実行できるためである。使用可能なバック バッファ フォーマットのセットは制限されているが、ランタイムは任意の有効なバック バッファ フォーマットを使って、任意のデスクトップ フォーマットにプレゼンテーションできる。ただし、デバイスがデスクトップ モードで動作可能でなければならないという要件もある。 通常、デバイスはピクセルあたり 8 ビットのモードでは動作しない。
フルスクリーン アプリケーションでは、色変換を実行できない。
BackBufferCount
この値には、0 (または 1)、2、または 3 を設定できる。0 は 1 として処理される。バック バッファが作成できなかった場合、ランタイムはメソッドの呼び出しに失敗し、作成できたバック バッファ数をこの値に設定する。したがって、同じ D3DPRESENT_PARAMETERS 構造体を指定してメソッドを 2 回呼び出せば、2 回目には呼び出しが成功するものと予想される。バック バッファを 1 つも作成できない場合、メソッドは失敗する。BackBufferCount の値は、使用可能なスワップ エフェクトのセットに影響を与える。特に、D3DSWAPEFFECT_COPY スワップ エフェクトでは、存在するバック バッファが厳密に 1 つでなければならない。
MultiSampleType
D3DMULTISAMPLE_TYPE 列挙型のメンバ。SwapEffect に D3DSWAPEFFECT_DISCARD が設定されていない場合、この値は D3DMULTISAMPLE_NONE でなければならない。マルチサンプリングは、スワップ エフェクトが D3DSWAPEFFECT_DISCARD の場合にのみサポートされる。MultiSampleQuality
品質レベル。有効範囲は、0 から、IDirect3D9::CheckDeviceMultiSampleType で使う pQualityLevels に返されるレベルから 1 を引いた値までである。これより大きな値を渡すと、エラー D3DERR_INVALIDCALL が返される。レンダリング ターゲットまたは深度ステンシル サーフェイスの組み合わせの値と、D3DMULTISAMPLE_TYPE は、一致している必要がある。SwapEffect
D3DSWAPEFFECT 列挙型のメンバ。ランタイムは、バッファ スワップ動作に関して指定されているセマンティクスを保証する。したがって、Windowed が TRUE で SwapEffect が D3DSWAPEFFECT_FLIP に設定されている場合、ランタイムは 1 つ余分にバック バッファを作成し、プレゼンテーション時にフロント バッファになるものをすべてコピーする。D3DSWAPEFFECT_COPY では、BackBufferCount を 1 に設定する必要がある。
デバッグ ランタイムにおいては、提示した後のバッファにノイズを格納することで、D3DSWAPEFFECT_DISCARD を強制する。
hDeviceWindow
フルスクリーン モードの場合、これはカバー ウィンドウである。ウィンドウ モードの場合、これは IDirect3DDevice9::Present に対するデフォルトのターゲット ウィンドウである。この値が NULL の場合は、フォーカス ウィンドウが使用される。マルチモニタ システムなど、複数のフルスクリーン デバイスを使用するアプリケーションの場合は、正確に 1 つのデバイスがデバイス ウィンドウとしてフォーカス ウィンドウを使用しなければならない。その他のすべてのウィンドウは、一意のデバイス ウィンドウを持つ。それ以外の場合は、動作は定義されておらず、アプリケーションは期待どおりに動作しない。ランタイムはユーザーによるウィンドウ サイズの変更を反映しようとしないことに、注意する必要がある。このウィンドウがリセットされても、バック バッファが暗黙的にリセットされることはない。ただし、IDirect3DDevice9::Present メソッドは、ウィンドウ位置の変化を自動的に追跡する。
Windowed
アプリケーションがウィンドウ モードで動作する場合は TRUE、フルスクリーン モードで動作する場合は FALSE である。EnableAutoDepthStencil
この値が TRUE の場合、Microsoft® Direct3D® はアプリケーションに対する深度バッファを管理する。デバイスは、作成されると、深度ステンシル バッファを作成する。深度ステンシル バッファは、デバイスのレンダリング ターゲットとして自動的に設定される。デバイスがリセットされると、深度ステンシル バッファは自動的に破棄されて、新しいサイズで再度作成される。EnableAutoDepthStencil が TRUE の場合、AutoDepthStencilFormat は有効な深度ステンシル フォーマットでなければならない。
AutoDepthStencilFormat
D3DFORMAT 列挙型のメンバ。デバイスが作成する自動深度ステンシル サーフェイスのフォーマットである。EnableAutoDepthStencil が TRUE でない場合、このメンバは無視される。Flags
D3DPRESENTFLAG のいずれか。FullScreen_RefreshRateInHz
ディスプレイ アダプタによるスクリーンのリフレッシュ レート。ウィンドウ モードの場合、この値は 0 でなければならない。 それ以外の場合、この値は、IDirect3D9::EnumAdapterModes が返すリフレッシュ レートのいずれか、または次の値のいずれかでなければならない。D3DPRESENT_RATE_DEFAULT
ランタイムはプレゼンテーション速度を選択する。 ウィンドウ モードの場合は、現在の速度を使う。
PresentationInterval
使用可能な値とその意味の一覧については、「D3DPRESENT」を参照すること。ウィンドウ スワップ チェーンで使用できる値は、D3DPRESENT_INTERVAL_DEFAULT、D3DPRESENT_INTERVAL_ONE (これは D3DPRESENT_INTERVAL_DEFAULT と等しい)、D3DPRESENT_INTERVAL_IMMEDIATE のいずれかである。
フルスクリーン スワップ チェーンの場合は、D3DPRESENT_INTERVAL_DEFAULT、または D3DCAPS9 の PresentationIntervals メンバに列挙されているいずれかのフラグに正確に一致する値を設定できる。フルスクリーン スワップ チェーンの場合は、D3DPRESENT_INTERVAL_IMMEDIATE が常に有効なオプションであることに注意すること。このプレゼンテーション間隔が選択されていて、ドライバが直接のページフリッピング処理をサポートしていない場合、ランタイムはバック バッファのコンテンツをフロント バッファにブリット処理を使ってコピーすることによって、IDirect3DDevice9::Present 処理を実装する。
構造体の情報
ヘッダー | d3d9types.h |
最低限のオペレーティング システム | Windows 98 |
参照
IDirect3D9::CreateDevice、IDirect3DDevice9::CreateAdditionalSwapChain、IDirect3DDevice9::Present、IDirect3DDevice9::Reset