Win32 API 日本語リファレンス
ホームGraphics.Dxgi › DXGI_PRESENT

DXGI_PRESENT

列挙型フラグ
基底型u4

メンバー 9

名前10進16進
DXGI_PRESENT_TEST10x1
DXGI_PRESENT_DO_NOT_SEQUENCE20x2
DXGI_PRESENT_RESTART40x4
DXGI_PRESENT_DO_NOT_WAIT80x8
DXGI_PRESENT_STEREO_PREFER_RIGHT160x10
DXGI_PRESENT_STEREO_TEMPORARY_MONO320x20
DXGI_PRESENT_RESTRICT_TO_OUTPUT640x40
DXGI_PRESENT_USE_DURATION2560x100
DXGI_PRESENT_ALLOW_TEARING5120x200

公式ドキュメント

DXGI_PRESENT 定数は、フレームを出力に提示する際のオプションを指定します。

定数/値 説明
0
各バッファー(現在のバッファーから開始)のフレームを出力に提示します。
DXGI_PRESENT_DO_NOT_SEQUENCE
0x00000002UL
現在のバッファーのフレームを出力に提示します。このフラグを使用すると、通常の方法でチェーン内のバッファーを順に切り替える代わりに、垂直帰線消去との同期を使用して提示できます。
注: 呼び出し元のアプリケーションが最初の提示操作(つまり現在のバッファーが存在しないとき)で DXGI_PRESENT_DO_NOT_SEQUENCE 定数を設定した場合、ランタイムはその提示操作を無視し、ドライバーを呼び出しません。
DXGI_PRESENT_TEST
0x00000001UL
フレームを出力に提示しません。スワップチェーンの状態がテストされ、適切なエラーが返されます。DXGI_PRESENT_TEST は、アイドル状態から切り替えるときにのみ使用することを想定しています。アイドル状態へ切り替えるタイミングの判定には使用しないでください。使用すると、スワップチェーンが全画面モードを終了できなくなる可能性があります。
DXGI_PRESENT_RESTART
0x00000004UL
ランタイムが、キューに入っている未処理の提示を破棄することを指定します。
DXGI_PRESENT_DO_NOT_WAIT
0x00000008UL
呼び出し元のスレッドがブロックされている場合に、ランタイムが提示(つまり IDXGISwapChain1::Present1 の呼び出し)を DXGI_ERROR_WAS_STILL_DRAWING エラーコードで失敗させることを指定します。ランタイムは、依存関係が解決されるまでスリープするのではなく、DXGI_ERROR_WAS_STILL_DRAWING を返します。
Direct3D 11: この列挙値は Windows 8 以降でサポートされます。
DXGI_PRESENT_RESTRICT_TO_OUTPUT
0x00000010UL
提示するコンテンツを特定の出力にのみ表示することを示します。そのコンテンツは他の出力には表示されません。たとえば、ユーザーがビデオコンテンツを別の出力へ移動しようとしても、そのビデオコンテンツは表示されません。
Direct3D 11: この列挙値は Windows 8 以降でサポートされます。
注: このフラグは、スワップ効果 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL または DXGI_SWAP_EFFECT_FLIP_DISCARD とのみ併用してください。それ以外のスワップ効果でこのフラグを使用することは非推奨となっており、将来のバージョンの Windows では動作しない可能性があります。
DXGI_PRESENT_STEREO_PREFER_RIGHT
0x00000020UL
ステレオの提示をモノラルに落とす必要がある場合に、左目用ではなく右目用の表示を使用することを示します。
Direct3D 11: この列挙値は Windows 8 以降でサポートされます。
DXGI_PRESENT_STEREO_TEMPORARY_MONO
0x00000040UL
提示において左バッファーをモノラルバッファーとして使用することを示します。アプリケーションは IDXGISwapChain1::IsTemporaryMonoSupported メソッドを呼び出して、スワップチェーンが「一時的なモノラル」をサポートしているかどうかを判断します。
Direct3D 11: この列挙値は Windows 8 以降でサポートされます。
DXGI_PRESENT_USE_DURATION
0x00000100UL
このフラグは、カスタムの提示間隔(カスタムのリフレッシュレート)を現在使用しているメディアアプリが設定する必要があります。IDXGISwapChainMedia を参照してください。
注: この値は Windows 8.1 以降でサポートされます。
DXGI_PRESENT_ALLOW_TEARING
0x00000200UL
ティアリングを許可することは、可変リフレッシュレートのディスプレイの要件です。
Present 中に DXGI_PRESENT_ALLOW_TEARING を使用するための条件は次のとおりです。
  • スワップチェーンは DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING フラグを指定して作成されている必要があります。
  • Present(または Present1)に渡す同期間隔は 0 でなければなりません。
  • DXGI_PRESENT_ALLOW_TEARING フラグは、現在全画面排他モード(SetFullscreenState(TRUE) の呼び出しによって設定)にあるアプリケーションでは使用できません。ウィンドウモードでのみ使用できます。全画面の Win32 アプリでこのフラグを使用するには、アプリケーションは全画面のボーダーレスウィンドウに提示し、IDXGIFactory::MakeWindowAssociation を使用して ALT+ENTER による自動的な全画面切り替えを無効にする必要があります。Windows::UI::ViewManagement::ApplicationView::TryEnterFullscreen() を呼び出して全画面モードに入る UWP アプリは全画面のボーダーレスウィンドウであるため、このフラグを使用できます。
上記の条件を満たさずにこのフラグを指定して Present(または Present1)を呼び出すと、呼び出し元のアプリケーションに DXGI_ERROR_INVALID_CALL エラーが返されます。

解説(Remarks)

提示オプションは、IDXGISwapChain::Present または IDXGISwapChain1::Present1 の呼び出し時に指定します。バッファーはスワップチェーンの記述(DXGI_SWAP_CHAIN_DESC または DXGI_SWAP_CHAIN_DESC1 を参照)で指定します。

DXGI_PRESENT_RESTART は、フリップモデルのスワップチェーンかつ全画面の場合にのみ有効です。アプリケーションは DXGI_PRESENT_RESTART を使用して、再生中の不具合から回復したり、以前にキューへ入れた提示を破棄したりできます。以前にキューへ入れた提示の破棄は、それらがウィンドウ表示のシナリオである場合に役立ちます。特に、以前にキューへ入れた提示が古いサイズのウィンドウを前提としている場合があります(つまり、送信後にサイズ変更操作が発生した場合です)。

DXGI_PRESENT_RESTRICT_TO_OUTPUT は、作成時(IDXGIFactory2::CreateSwapChainForHwnd)にコンテンツを制限する特定の出力を指定したスワップチェーンでのみ有効です。制限先の出力が存在しない場合、このフラグは無効です。

DXGI_PRESENT_STEREO_PREFER_RIGHT は、ステレオの提示をモノラルに落とす必要がある場合に、左目(既定)ではなく右目を使用することを示します。一方の側の品質が高い場合(たとえば、標準的な画像からステレオペアを合成した場合など)に、このフラグを使用できます。

DXGI_PRESENT_STEREO_TEMPORARY_MONO は、提示において左バッファーをモノラルバッファーとして使用することを示します。アプリケーションが一時的にステレオコンテンツを持たない場合に、右バッファーの更新を回避するためこのフラグを使用できます。オペレーティングシステムによる大幅な最適化が可能になり、状況によっては目に見えるモード変更のアーティファクトを回避できるため、可能な限りこのフラグを使用してください。

再びステレオを使用すると見込まれるほとんどのアプリケーションでは、モノラルのスワップチェーンへ切り替えるよりも DXGI_PRESENT_STEREO_TEMPORARY_MONO フラグを優先して使用してください。非常に長時間実行されるアプリケーションや、ステレオを表示することがまれなアプリケーションでは、このフラグの使用と未使用メモリという欠点とのバランスを考慮する必要があります。

メモ

モノラルのスワップチェーンへ切り替える全画面アプリケーションでは、モード変更が発生し、一般に目に見えるアーティファクト(たとえば「ちらつき」)を伴います。ただし、全画面のスワップチェーンでは一時的なモノラルがサポートされない場合があります。

DXGI_PRESENT_STEREO_PREFER_RIGHT および DXGI_PRESENT_STEREO_TEMPORARY_MONO フラグは、ステレオのスワップチェーンにのみ適用されます。モノラルのスワップチェーンを提示するときにこれらを使用すると、無効な操作となります。

一時的なモノラルをサポートしていないステレオのスワップチェーンを提示するときに DXGI_PRESENT_STEREO_TEMPORARY_MONO フラグを使用すると、エラーが発生し、スワップチェーンは表示されず、提示は DXGI_ERROR_INVALID_CALL を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum DXGI_PRESENT : unsigned int {
    DXGI_PRESENT_TEST = 1,
    DXGI_PRESENT_DO_NOT_SEQUENCE = 2,
    DXGI_PRESENT_RESTART = 4,
    DXGI_PRESENT_DO_NOT_WAIT = 8,
    DXGI_PRESENT_STEREO_PREFER_RIGHT = 16,
    DXGI_PRESENT_STEREO_TEMPORARY_MONO = 32,
    DXGI_PRESENT_RESTRICT_TO_OUTPUT = 64,
    DXGI_PRESENT_USE_DURATION = 256,
    DXGI_PRESENT_ALLOW_TEARING = 512
} DXGI_PRESENT;
[Flags]
public enum DXGI_PRESENT : uint
{
    DXGI_PRESENT_TEST = 1,
    DXGI_PRESENT_DO_NOT_SEQUENCE = 2,
    DXGI_PRESENT_RESTART = 4,
    DXGI_PRESENT_DO_NOT_WAIT = 8,
    DXGI_PRESENT_STEREO_PREFER_RIGHT = 16,
    DXGI_PRESENT_STEREO_TEMPORARY_MONO = 32,
    DXGI_PRESENT_RESTRICT_TO_OUTPUT = 64,
    DXGI_PRESENT_USE_DURATION = 256,
    DXGI_PRESENT_ALLOW_TEARING = 512,
}
<Flags>
Public Enum DXGI_PRESENT As UInteger
    DXGI_PRESENT_TEST = 1
    DXGI_PRESENT_DO_NOT_SEQUENCE = 2
    DXGI_PRESENT_RESTART = 4
    DXGI_PRESENT_DO_NOT_WAIT = 8
    DXGI_PRESENT_STEREO_PREFER_RIGHT = 16
    DXGI_PRESENT_STEREO_TEMPORARY_MONO = 32
    DXGI_PRESENT_RESTRICT_TO_OUTPUT = 64
    DXGI_PRESENT_USE_DURATION = 256
    DXGI_PRESENT_ALLOW_TEARING = 512
End Enum
import enum

class DXGI_PRESENT(enum.IntFlag):
    DXGI_PRESENT_TEST = 1
    DXGI_PRESENT_DO_NOT_SEQUENCE = 2
    DXGI_PRESENT_RESTART = 4
    DXGI_PRESENT_DO_NOT_WAIT = 8
    DXGI_PRESENT_STEREO_PREFER_RIGHT = 16
    DXGI_PRESENT_STEREO_TEMPORARY_MONO = 32
    DXGI_PRESENT_RESTRICT_TO_OUTPUT = 64
    DXGI_PRESENT_USE_DURATION = 256
    DXGI_PRESENT_ALLOW_TEARING = 512
// DXGI_PRESENT (flags)
pub const DXGI_PRESENT_TEST: u32 = 1;
pub const DXGI_PRESENT_DO_NOT_SEQUENCE: u32 = 2;
pub const DXGI_PRESENT_RESTART: u32 = 4;
pub const DXGI_PRESENT_DO_NOT_WAIT: u32 = 8;
pub const DXGI_PRESENT_STEREO_PREFER_RIGHT: u32 = 16;
pub const DXGI_PRESENT_STEREO_TEMPORARY_MONO: u32 = 32;
pub const DXGI_PRESENT_RESTRICT_TO_OUTPUT: u32 = 64;
pub const DXGI_PRESENT_USE_DURATION: u32 = 256;
pub const DXGI_PRESENT_ALLOW_TEARING: u32 = 512;
// DXGI_PRESENT
const (
	DXGI_PRESENT_TEST uint32 = 1
	DXGI_PRESENT_DO_NOT_SEQUENCE uint32 = 2
	DXGI_PRESENT_RESTART uint32 = 4
	DXGI_PRESENT_DO_NOT_WAIT uint32 = 8
	DXGI_PRESENT_STEREO_PREFER_RIGHT uint32 = 16
	DXGI_PRESENT_STEREO_TEMPORARY_MONO uint32 = 32
	DXGI_PRESENT_RESTRICT_TO_OUTPUT uint32 = 64
	DXGI_PRESENT_USE_DURATION uint32 = 256
	DXGI_PRESENT_ALLOW_TEARING uint32 = 512
)
const
  DXGI_PRESENT_TEST = 1;
  DXGI_PRESENT_DO_NOT_SEQUENCE = 2;
  DXGI_PRESENT_RESTART = 4;
  DXGI_PRESENT_DO_NOT_WAIT = 8;
  DXGI_PRESENT_STEREO_PREFER_RIGHT = 16;
  DXGI_PRESENT_STEREO_TEMPORARY_MONO = 32;
  DXGI_PRESENT_RESTRICT_TO_OUTPUT = 64;
  DXGI_PRESENT_USE_DURATION = 256;
  DXGI_PRESENT_ALLOW_TEARING = 512;
// DXGI_PRESENT
pub const DXGI_PRESENT_TEST: u32 = 1;
pub const DXGI_PRESENT_DO_NOT_SEQUENCE: u32 = 2;
pub const DXGI_PRESENT_RESTART: u32 = 4;
pub const DXGI_PRESENT_DO_NOT_WAIT: u32 = 8;
pub const DXGI_PRESENT_STEREO_PREFER_RIGHT: u32 = 16;
pub const DXGI_PRESENT_STEREO_TEMPORARY_MONO: u32 = 32;
pub const DXGI_PRESENT_RESTRICT_TO_OUTPUT: u32 = 64;
pub const DXGI_PRESENT_USE_DURATION: u32 = 256;
pub const DXGI_PRESENT_ALLOW_TEARING: u32 = 512;
const
  DXGI_PRESENT_TEST* = 1
  DXGI_PRESENT_DO_NOT_SEQUENCE* = 2
  DXGI_PRESENT_RESTART* = 4
  DXGI_PRESENT_DO_NOT_WAIT* = 8
  DXGI_PRESENT_STEREO_PREFER_RIGHT* = 16
  DXGI_PRESENT_STEREO_TEMPORARY_MONO* = 32
  DXGI_PRESENT_RESTRICT_TO_OUTPUT* = 64
  DXGI_PRESENT_USE_DURATION* = 256
  DXGI_PRESENT_ALLOW_TEARING* = 512
enum DXGI_PRESENT : uint {
    DXGI_PRESENT_TEST = 1,
    DXGI_PRESENT_DO_NOT_SEQUENCE = 2,
    DXGI_PRESENT_RESTART = 4,
    DXGI_PRESENT_DO_NOT_WAIT = 8,
    DXGI_PRESENT_STEREO_PREFER_RIGHT = 16,
    DXGI_PRESENT_STEREO_TEMPORARY_MONO = 32,
    DXGI_PRESENT_RESTRICT_TO_OUTPUT = 64,
    DXGI_PRESENT_USE_DURATION = 256,
    DXGI_PRESENT_ALLOW_TEARING = 512,
}
#define global DXGI_PRESENT_TEST                  0x1
#define global DXGI_PRESENT_DO_NOT_SEQUENCE       0x2
#define global DXGI_PRESENT_RESTART               0x4
#define global DXGI_PRESENT_DO_NOT_WAIT           0x8
#define global DXGI_PRESENT_STEREO_PREFER_RIGHT   0x10
#define global DXGI_PRESENT_STEREO_TEMPORARY_MONO 0x20
#define global DXGI_PRESENT_RESTRICT_TO_OUTPUT    0x40
#define global DXGI_PRESENT_USE_DURATION          0x100
#define global DXGI_PRESENT_ALLOW_TEARING         0x200
; ※フラグ列挙型。ビットORで組み合わせ可(例: FOO|BAR)。