D3DPRESENT
アダプター リフレッシュ レートと、IDirect3DDevice9::Present または IDirect3DSwapChain9::Present の処理が完了するレートとの関係を記述します。これらの値は、D3DCAPS9 の PresentationIntervals フィールドのフラグ値としても使われます。
#define | 説明 |
---|---|
D3DPRESENT_DONOTFLIP | レンダリングの最中、フロント バッファーがソース サーフェスおよびターゲット サーフェスとして使用されます。フレーム同期はスケジューリングされますが、表示されるサーフェスは変更されません。このフラグが使用できるのは、アプリケーションが全画面モードであり、D3DSWAPEFFECT_FLIPEX を指定している場合のみです。
Direct3D 9 と Direct3D 9Ex の違い このフラグは Direct3D 9Ex でのみ使用できます。
|
D3DPRESENT_DONOTWAIT | HAL デバイスがプレゼンテーションをスケジューリングできません。IDirect3DSwapChain9::Present の呼び出し時にこのフラグが設定されており、ハードウェアがビジー状態にあるか垂直同期期間の待機中にある場合、Present は D3DERR_WASSTILLDRAWING を返すことにより、ブリット処理が完了していないことを示します。 |
D3DPRESENT_FLIPRESTART | 予約済みです。 |
D3DPRESENT_FORCEIMMEDIATE | この Present 呼び出しには D3DPRESENT_INTERVAL_IMMEDIATE が適用されます。このフラグは、D3DSWAPEFFECT_FLIPEX を使用しているときにのみ指定できます。ウィンドウ表示でも全画面表示でも動作は同じです。これは、メディア アプリケーションで画面を構成しているときに、遅延が検出されたフレームを破棄して次のフレームを表示する場合に特に役立ちます。このフラグを不適切に指定すると、無効なパラメーターのエラーが返されます。D3DPRESENT_FORCEIMMEDIATE が設定された複数の連続するフレームがキューに格納されると、ウィンドウ表示でも全画面表示でも、最後のフレームのみが表示されます。
Direct3D 9 と Direct3D 9Ex の違い このフラグは、Windows 7 以降のオペレーティング システムで実行している Direct3D 9Ex でのみ使用できます。D3DSWAPEFFECT_FLIPEX を使用すると、D3DPRESENT_INTERVAL_IMMEDIATE または D3DPRESENT_INTERVAL_FORCEIMMEDIATE を使用して表示される各フレームによって、前のフレームの表示間隔が無効になります。たとえば、次のスワップ エフェクトを使用するフレーム A (D3DPRESENT_INTERVAL_ONE)、フレーム B (D3DPRESENT_INTERVAL_ONE)、フレームC (D3DPRESENT_INTERVAL_ONE)、フレーム D (D3DPRESENT_INTERVAL_FORCEIMMEDIATE) をキューに格納すると、フレーム C の表示間隔がフレーム D によって無効になります。表示間隔ごとに表示されるフレームは、フレーム A、フレーム B、フレーム D となります (フレーム C はフレーム D によって無効になります)。
|
D3DPRESENT_INTERVAL_DEFAULT | これは、D3DPRESENT_INTERVAL_ONE とほぼ等価です。「解説」を参照してください。 |
D3DPRESENT_INTERVAL_ONE | ドライバーは垂直帰線間隔を待ちます (ランタイムはテアリングを防ぐために "ビーム追従" します)。IDirect3DDevice9::Present の処理への影響は、スクリーン リフレッシュ レートほど頻繁ではありません。ランタイムはアダプターのリフレッシュ間隔ごとに最大 1 回の Present 操作を行います。これは、DirectX 8.1 の D3DSWAPEFFECT_COPYVSYNC を使用するのと等価です。このオプションは、ウィンドウ表示スワップ チェーンでも全画面スワップ チェーンでも常に利用できます。「解説」を参照してください。 |
D3DPRESENT_INTERVAL_TWO | ドライバーは垂直帰線間隔を待ちます。IDirect3DDevice9::Present の処理への影響は、1 回おきのスクリーン リフレッシュほど頻繁ではありません。D3DPRESENT_INTERVAL_TWO がドライバーによってサポートされているか否かを調べるには、PresentationIntervals 能力 (D3DCAPS9 を参照) をチェックしてください。 |
D3DPRESENT_INTERVAL_THREE | ドライバーは垂直帰線間隔を待ちます。IDirect3DDevice9::Present の処理への影響は、2 回おきのスクリーン リフレッシュほど頻繁ではありません。D3DPRESENT_INTERVAL_THREE がドライバーによってサポートされているか否かを調べるには、PresentationIntervals 能力 (D3DCAPS9 を参照) をチェックしてください。 |
D3DPRESENT_INTERVAL_FOUR | ドライバーは垂直帰線間隔を待ちます。IDirect3DDevice9::Present の処理への影響は、3 回おきのスクリーン リフレッシュほど頻繁ではありません。D3DPRESENT_INTERVAL_FOUR がドライバーによってサポートされているか否かを調べるには、PresentationIntervals メンバー (D3DCAPS9 を参照) をチェックしてください。 |
D3DPRESENT_INTERVAL_IMMEDIATE | ランタイムは、ウィンドウ クライアント領域を即座に更新します (更新回数は、アダプター リフレッシュ間隔中、2 回以上になる場合もある)。これは、DirectX 8 で D3DSWAPEFFECT_COPY を使用することと等価です。IDirect3DDevice9::Present の処理が直ちに影響を受ける可能性があります。このオプションは、ウィンドウ表示スワップ チェーンでも全画面スワップ チェーンでも必ず利用できます。「解説」を参照してください。 |
D3DPRESENT_LINEAR_CONTENT | 表示されるバック バッファーの内容は、線形色空間にあります。
|
D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR | アダプターがターゲットとしているモニター/デバイスにレンダリングされたコンテンツを切り取り、Flip3D ビューではコンテンツのサムネイル、他のモニターではタスクバー サムネイルを表示します。
Direct3D 9 と Direct3D 9Ex の違い このフラグは Direct3D 9Ex でのみ使用できます。
|
D3DPRESENT_UPDATEOVERLAYONLY | TBD |
D3DPRESENT_HIDEOVERLAY | TBD |
D3DPRESENT_UPDATECOLORKEY | TBD |
解説
ウィンドウ表示モードでは、D3DPRESENT_INTERVAL_DEFAULT、D3DPRESENT_INTERVAL_IMMEDIATE、および D3DPRESENT_INTERVAL_ONE がサポートされています。D3DPRESENT_INTERVAL_DEFAULT と D3DPRESENT_INTERVAL_ONE は、ほぼ等価です (後述のタイマーの分解能に関する情報を参照)。これらは、フレームごとに表示が 1 回だけあり、ビーム追従によってテアリングが抑止される点で、COPY_VSYNC に類似した動作を行います。対照的に、D3DPRESENT_INTERVAL_IMMEDIATE の場合は、無制限の表示レートを提供しようとします。
全画面モードでも、リフレッシュ レートまたはスワップ エフェクトとは無関係に D3DPRESENT_INTERVAL_IMMEDIATE をサポートすることにより、ウィンドウ表示モードと同様な使用法がサポートされます。D3DPRESENT_INTERVAL_DEFAULT では、既定のシステム タイマーの分解能が使用されます。一方、D3DPRESENT_INTERVAL_ONE では timeBeginPeriod を呼び出し、システム タイマーの分解能を拡張します。これにより、垂直同期の品質が改善されますが、処理に時間が少し多くかかります。いずれのパラメーターの場合も、垂直同期が試行されます。
定数情報
ヘッダー | d3d9.h |
最低限必要なオペレーティング システム | Windows 98 |