DXGI_PRESENT

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::P resent1) 失败,并显示 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错误。

注解

IDXGISwapChain::P resentIDXGISwapChain1::P resent1 调用期间提供演示选项。 缓冲区在交换链说明中指定, (请参阅 DXGI_SWAP_CHAIN_DESCDXGI_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

要求

要求
标头
DXGI.h

请参阅

DXGI 常量