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

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

構文

HRESULT Present(
  UINT SyncInterval,
  UINT Flags
);

パラメーター

SyncInterval

型: UINT

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

ビット ブロック転送 (bitblt) モデル (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値セットを使用して作成したフリップ プレゼンテーション モデルスワップ チェーンの場合、正常なプレゼンテーションでは、Flags パラメーターでDXGI_PRESENT_DO_NOT_SEQUENCEフラグを渡す場合を除き、グラフィックス パイプラインからバック バッファー 0 のバインドが解除されます。

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

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

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