DXGI_SWAP_CHAIN_FLAG 枚举 (dxgi.h)

交换链行为的选项。

语法

typedef enum DXGI_SWAP_CHAIN_FLAG {
  DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1,
  DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 2,
  DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 4,
  DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT = 8,
  DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 16,
  DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 32,
  DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 64,
  DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER = 128,
  DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO = 256,
  DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO = 512,
  DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED = 1024,
  DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING = 2048,
  DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS = 4096
} ;

常量

 
DXGI_SWAP_CHAIN_FLAG_NONPREROTATED
值:1
设置此标志以关闭自动图像旋转;也就是说,在将前缓冲区的内容传输到监视器时不执行旋转。
使用此标志可避免在应用程序预期处理旋转时产生带宽损失。 此选项仅在全屏模式下有效。
DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH
值: 2
设置此标志以允许应用程序通过调用 IDXGISwapChain::ResizeTarget 切换模式。
从窗口模式切换到全屏模式时,将更改显示模式 (或监视器分辨率) ,以匹配应用程序窗口的尺寸。
DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE
值: 4
设置此标志以使应用程序能够在交换链或图面上使用 GDI 进行呈现。
这将允许应用程序在第 0 个后台缓冲区或图面上调用 IDXGISurface1::GetDC

此标志不适用于 Direct3D 12。
DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT
值: 8
设置此标志以指示交换链可能包含受保护的内容;因此,仅当使用驱动程序和硬件保护时,操作系统才支持创建交换链。 如果驱动程序和硬件不支持内容保护,则为交换链创建资源的调用将失败。

Direct3D 11: 从 Windows 8 开始支持此枚举值。
DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER
值: 16
设置此标志以指示在交换链中创建的共享资源必须使用驱动程序的机制来限制对共享图面的访问进行保护。

Direct3D 11: 从 Windows 8 开始支持此枚举值。
DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY
值: 32
设置此标志以将呈现的内容限制为本地显示器。 因此,无法通过远程访问或 桌面复制 API 访问提供的内容。

此标志支持 Windows 的窗口内容保护功能。 应用程序可以使用此标志来防止通过一组特定的公共操作系统功能和 API 捕获或复制自己的屏幕窗口内容。

如果将此标志与窗口化 (HWNDIWindow) 交换链(其中另一个进程创建了 HWND), 则 HWND 的所有者必须适当地使用 SetWindowDisplayAffinity 函数,才能成功调用 IDXGISwapChain::P resentIDXGISwapChain1::P resent1


Direct3D 11: 从 Windows 8 开始支持此枚举值。
DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT
值: 64
设置此标志以创建一个可等待对象,你可以使用该对象来确保在帧仍在呈现时不会开始呈现。 使用此标志时,必须使用 IDXGISwapChain2::SetMaximumFrameLatency API 而不是 IDXGIDevice1::SetMaximumFrameLatency 设置交换链的延迟。

除非呈现 API 为 Direct3D 12,否则全屏模式下不支持此标志。

注意从 Windows 8.1 开始支持此枚举值。
DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER
值: 128
设置此标志以在前台层中创建一个交换链,用于多平面呈现。 此标志只能与 CoreWindow 交换链一起使用,这些交换链是使用 CreateSwapChainForCoreWindow 创建的。 如果 IDXGIOutput2::SupportsOverlays 指示对覆盖的硬件支持不可用,则应用不应创建前台交换链。

请注意, IDXGISwapChain::ResizeBuffers 不能用于添加或删除此标志。

注意从 Windows 8.1 开始支持此枚举值。
DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO
值: 256
设置此标志以创建全屏视频的交换链。

注意从 Windows 8.1 开始支持此枚举值。
DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO
值: 512
设置此标志以创建 YUV 视频的交换链。

注意从 Windows 8.1 开始支持此枚举值。
DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED
值: 1024
指示应创建交换链,以便所有基础资源都可以由硬件保护。 如果不支持硬件内容保护,则资源创建将失败。

此标志具有以下限制:


  • 此标志只能与交换效果 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL一起使用。


注意 使用此标志创建交换链并不自动保证将为基础分配启用硬件保护。 某些实现要求先初始化 DRM 组件,然后再进行任何保护保证。

 

注意从 Windows 10 开始支持此枚举值。
DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING
值: 2048
撕裂支持是启用支持可变刷新率的显示器才能在应用程序呈现绑定到全屏无边框窗口的交换链时正常运行的要求。 Win32 应用已通过调用 SetFullscreenState (TRUE) 在全屏独占模式下实现撕裂,但 Win32 开发人员的建议方法是改用此撕裂标志。 此标志需要使用 DXGI_SWAP_EFFECT_FLIP_* 交换效果。

若要检查此功能的硬件支持,请参阅 IDXGIFactory5::CheckFeatureSupport。 有关使用情况信息,请参阅 IDXGISwapChain::P resentDXGI_PRESENT 标志。

注意

IDXGISwapChain::ResizeBuffers 不能用于添加或删除此标志。

DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS
值: 4096

注解

此枚举由 DXGI_SWAP_CHAIN_DESC 结构和 IDXGISwapChain::ResizeTarget 方法使用。

此枚举也由 DXGI_SWAP_CHAIN_DESC1 结构使用。

无需为使用 IDXGIFactory::CreateSwapChain 方法在全屏模式下创建的交换链设置DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY,因为这些交换链的行为已如同设置DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY一样。 也就是说,无法通过远程访问或 桌面复制 API 访问呈现的内容。

如果未设置DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY,则使用 IDXGIFactory2::CreateSwapChainForHwndIDXGIFactory2::CreateSwapChainForCoreWindowIDXGIFactory2::CreateSwapChainForComposition 方法创建的交换链不受保护,如果设置了DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY,则不受保护。 当交换链受到保护时,会阻止屏幕抓取,在全屏模式下,无法通过 桌面复制 API 访问呈现的内容。

调用 IDXGISwapChain::ResizeBuffers 来更改交换链的后台缓冲区时,可以重置或更改所有 DXGI_SWAP_CHAIN_FLAG 标志。

要求

要求
Header dxgi.h

另请参阅

DXGI 枚举