Microsoft DirectX 8.0 (C++)

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、または D3DCAPS8PresentationIntervals メンバに列挙されるフラグに対応する値を設定できる。
D3DPRESENT_INTERVAL_IMMEDIATE
プレゼンテーション処理に直接影響する場合がある。ドライバは垂直帰線間隔を待たない。
D3DPRESENT_INTERVAL_ONE
ドライバは垂直帰線間隔を待つ。プレゼンテーション処理への影響は、スクリーン リフレッシュほど頻繁ではない。
D3DPRESENT_INTERVAL_TWO
ドライバは垂直帰線間隔を待つ。プレゼンテーション処理への影響は、スクリーン リフレッシュ (1 回おき) ほど頻繁ではない。
D3DPRESENT_INTERVAL_THREE
ドライバは垂直帰線間隔を待つ。プレゼンテーション処理への影響は、スクリーン リフレッシュ (2 回おき) ほど頻繁ではない。
D3DPRESENT_INTERVAL_FOUR
ドライバは垂直帰線間隔を待つ。プレゼンテーション処理への影響は、スクリーン リフレッシュ (3 回おき) ほど頻繁ではない。

動作環境

  ヘッダー : D3d8types.h で宣言。

参照

IDirect3D8::CreateDeviceIDirect3DDevice8::CreateAdditionalSwapChainIDirect3DDevice8::PresentIDirect3DDevice8::Reset