次の方法で共有


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 表示されるバック バッファーの内容は、線形色空間にあります。
  • プレゼンテーションは、線形空間から sRGB (ガンマ = 2.2) に、暗黙的に変換されます。サポートされている変換は、これだけです。
  • このフラグは、バック バッファーの内容のプロパティを表すため、IDirect3DSwapChain9::Present の呼び出し時に指定できます。つまり、アプリケーションではリニア コンテンツを 1 つのフレームに表示し、次のフレーム内の補正されたコンテンツに切り替えることができます。
  • このフラグは、スワップ チェーンが全画面の場合、無視されます(このフラグは、IDirect3DSwapChain9::Present の明示的なスワップ チェーンに対してのみ利用できる点に注意してください。IDirect3DDevice9::Present メソッドに flags パラメーターはありません)。
  • このフラグは常に受け入れられますが、効果があるのはドライバーが D3DCAPS3_LINEAR_TO_SRGB_PresentATION を公開している場合だけです。
  • サポートされている唯一のバック バッファー フォーマットは、X8R8G8B8 です。
ウィンドウ表示のスワップ チェーン」を参照してください。
D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR アダプターがターゲットとしているモニター/デバイスにレンダリングされたコンテンツを切り取り、Flip3D ビューではコンテンツのサムネイル、他のモニターではタスクバー サムネイルを表示します。
Direct3D 9 と Direct3D 9Ex の違い このフラグは Direct3D 9Ex でのみ使用できます。
Windows Vista のこの機能の詳細については、「デスクトップ ウィンドウ マネージャー」を参照してください。デスクトップ コンポジション モードで実行中でない場合、このフラグは D3DPRESENTFLAG_DEVICECLIP と同じ動作になります。
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