IDXGISwapChain::P resent メソッド (dxgi.h)

レンダリングされたイメージをユーザーに表示します。

構文

HRESULT Present(
  UINT SyncInterval,
  UINT Flags
);

パラメーター

SyncInterval

型: UINT

フレームのプレゼンテーションを垂直空白と同期する方法を指定する整数。

ビット ブロック転送 (ビットblt) モデル (DXGI_SWAP_EFFECT_DISCARD または DXGI_SWAP_EFFECT_SEQUENTIAL) の場合、値は次のとおりです。

  • 0 - プレゼンテーションはすぐに行われ、同期はありません。
  • 1 から 4 - n番目の垂直空白の後にプレゼンテーションを同期します。
フリップ モデル (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) の値は次のとおりです。
  • 0 - 以前に提示されたフレームの残りの時間を取り消し、新しいフレームがキューに入っている場合は、このフレームを破棄します。
  • 1 から 4 - 少なくとも n 個の垂直ブランクのプレゼンテーションを同期します。
同期間隔の値がフリップ プレゼンテーション キューにどのように影響するかを示す例については、「解説」を参照してください。

更新領域が複数の出力 (それぞれ IDXGIOutput で表される) をまたぐ場合、 Present は 、ターゲット ウィンドウのクライアント領域の最大サブ四角形を含む出力への同期を実行します。

Flags

型: UINT

スワップ チェーンプレゼンテーション オプションを含む整数値。 これらのオプションは、 DXGI_PRESENT 定数によって定義されます。

戻り値

種類: HRESULT

戻り値としては、S_OK、DXGI_ERROR_DEVICE_RESET、またはDXGI_ERROR_DEVICE_REMOVED (DXGI_ERROR参照)、 DXGI_STATUS_OCCLUDED ( DXGI_STATUS参照)、D3DDDIERR_DEVICEREMOVEDなどがあります。

メモPresent メソッドは、ビデオ カードがコンピューターから物理的に削除された場合、またはビデオ カードのドライバーのアップグレードが発生した場合に、DXGI_ERROR_DEVICE_REMOVEDまたはD3DDDIERR_DEVICEREMOVEDを返すことができます。
 

注釈

Direct3D 11.1 以降では、IDXGISwapChain1::P resent1 を使用することを検討してください。これは、スワップ チェーン プレゼンテーションでダーティ四角形とスクロール四角形を使用できるため、メモリ帯域幅が少なくなり、結果としてシステム電力が少なくなります。 スワップ チェーンプレゼンテーションでダーティ四角形とスクロール四角形を使用する方法の詳細については、「スワップ チェーンプレゼンテーションでダーティ四角形とスクロール四角形を使用する」を参照してください。

全画面表示アプリケーションでスワップ チェーン バッファーを反転するときの最適なパフォーマンスについては、「全画面表示 アプリケーションのパフォーマンス ヒント」を参照してください。

Present を呼び出すと、レンダリング スレッドがメッセージ ポンプ スレッドで待機する可能性があるため、複数のスレッドを使用するアプリケーションでこのメソッドを呼び出すときは注意が必要です。 詳細については、「 マルチスレッドに関する考慮事項」を参照してください。

Direct3D 9 と Direct3D 10 の違い:

Flags パラメーターでDXGI_PRESENT_TESTを指定することは、Direct3D 9 の IDirect3DDevice9::TestCooperativeLevel に似ています。

DXGI_SWAP_EFFECT_FLIP_SEQUENTIALまたはDXGI_SWAP_EFFECT_DISCARD値セットを使用して作成したフリップ プレゼンテーション モデルのスワップ チェーンの場合、正常なプレゼンテーションでは、Flags パラメーターで DXGI_PRESENT_DO_NOT_SEQUENCE フラグを渡す場合を除き、グラフィックス パイプラインからバック バッファー 0 (通常は OMSetRenderTargets によって設定) がバインド解除されます。

画面にコンテンツを表示するときにデータ値がどのように変化するかについては、「 色空間のデータの変換」を参照してください。

プレゼンテーション モデル キューを反転する

同期間隔の値を持つ次のフレームが、 Present を呼び出す前に、最も古い (A) から最新 (E) にキューに入れているとします。

A: 3, B: 0, C: 0, D: 1, E: 0

Present を呼び出すと、ランタイムは 1 つの垂直空白間隔についてのみフレーム A を表示します。 フレーム B の同期間隔 0 が原因で、ランタイムはフレーム A を早期に終了します。次に、ランタイムは、1 つの垂直空白間隔のフレーム D を表示し、新しいプレゼンテーションを送信するまでフレーム E を表示します。 ランタイムはフレーム B と C を破棄します。

可変リフレッシュ レートの表示

これは、ティアリングが有効になっていることを示す可変リフレッシュレート表示の要件です。 CheckFeatureSupport メソッドを使用すると、この機能が使用可能かどうかを判断し、必要なフラグを設定するには、DXGI_PRESENT_ALLOW_TEARINGDXGI_SWAP_CHAIN_FLAG_ALLOW_TEARINGの説明を参照し、変数の更新レートが表示されます

要件

要件
対象プラットフォーム Windows
ヘッダー dxgi.h
Library DXGI.lib

こちらもご覧ください

IDXGISwapChain