D3D11_CREATE_DEVICE_FLAG 枚举 (d3d11.h)

描述用于创建设备的参数。

语法

typedef enum D3D11_CREATE_DEVICE_FLAG {
  D3D11_CREATE_DEVICE_SINGLETHREADED = 0x1,
  D3D11_CREATE_DEVICE_DEBUG = 0x2,
  D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
  D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8,
  D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x20,
  D3D11_CREATE_DEVICE_DEBUGGABLE = 0x40,
  D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x80,
  D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
  D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x800
} ;

常量

 
D3D11_CREATE_DEVICE_SINGLETHREADED
值: 0x1
如果应用程序仅从单个线程调用 Direct3D 11 接口的方法,请使用此标志。 默认情况下, ID3D11Device 对象是 线程安全的
使用此标志可以提高性能。 但是,如果使用此标志,并且应用程序从多个线程调用 Direct3D 11 接口的方法,则可能会导致未定义的行为。
D3D11_CREATE_DEVICE_DEBUG
值: 0x2
创建支持 调试层的设备。

若要使用此标志,必须安装 D3D11*SDKLayers.dll;否则,设备创建会失败。 若要获取 D3D11_1SDKLayers.dll,请安装 sdk for Windows 8。
D3D11_CREATE_DEVICE_SWITCH_TO_REF
值: 0x4
注意 Direct3D 11 不支持此标志。

 
D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS
值: 0x8
防止创建多个线程。 当此标志与 Windows 高级光栅化平台 (WARP) 设备一起使用时,WARP 不会创建任何其他线程
和 所有光栅化都将在调用线程上发生。 不建议将此标志用于常规用途。 请参阅备注。
D3D11_CREATE_DEVICE_BGRA_SUPPORT
值: 0x20
创建支持 BGRA 格式 (DXGI_FORMAT_B8G8R8A8_UNORMDXGI_FORMAT_B8G8R8A8_UNORM_SRGB) 的设备。 所有具有 WDDM 1.1+ 驱动程序的 10level9 和更高硬件都支持 BGRA 格式。

注意 Direct2D 与 Direct3D 资源的互操作性所必需的。

 
D3D11_CREATE_DEVICE_DEBUGGABLE
值: 0x40
使设备和驱动程序保留可用于着色器调试的信息。 此标志的确切影响因驱动程序而异。

若要使用此标志,必须安装 D3D11_1SDKLayers.dll;否则,设备创建会失败。 创建的设备支持 调试层。 若要获取 D3D11_1SDKLayers.dll,请安装 sdk for Windows 8。

如果使用此标志,并且当前驱动程序不支持着色器调试,则设备创建将失败。 着色器调试需要实现到 WDDM Windows 8 (WDDM 1.2) 的驱动程序。

Direct3D 11: 在 Direct3D 11.1 之前不支持此值。
D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY
值: 0x80
导致 Direct3D 运行时忽略启用 调试层的注册表设置。 可以使用 DirectX SDK 中包含的 DirectX 控制面板打开调试层。 我们在 2010 年 6 月交付了最新版本的 DirectX SDK;可以从 Microsoft 下载中心下载它。 可以在应用中(通常仅在发布版本中)中设置此标志,以防止最终用户使用 DirectX 控制面板监视应用如何使用 Direct3D。

注意还可以在应用中设置此标志,以防止 Direct3D 调试工具(如 Visual Studio Ultimate 2012)挂接应用。

 

Windows 8.1:此标志不会阻止在 Windows 8.1 及更高版本上运行的 Visual Studio 2013 及更高版本挂接应用;而是使用 ID3D11DeviceContext2::IsAnnotationEnabled。 此标志仍会阻止Visual Studio 2013及以后在 Windows 8 及更早版本上运行应用。

Direct3D 11: 在 Direct3D 11.1 之前不支持此值。
D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT
值: 0x100
如果设备将生成需要两秒以上才能完成的 GPU 工作负载,并且你希望操作系统允许它们成功完成,请使用此标志。 如果未设置此标志,操作系统将在检测到执行时间超过两秒的 GPU 数据包时执行 超时检测和恢复 。 如果设置了此标志,则操作系统允许执行此类长时间运行的数据包,而无需重置 GPU。 如果你的设备需要高度响应,以便操作系统可以检测 GPU 超时并从中恢复,建议不要设置此标志。 如果你的设备需要执行耗时的后台任务(如计算、图像识别和视频编码),则建议设置此标志,以便成功完成此类任务。

Direct3D 11: 在 Direct3D 11.1 之前不支持此值。
D3D11_CREATE_DEVICE_VIDEO_SUPPORT
值: 0x800
如果显示驱动程序未实现到 WDDM Windows 8 (WDDM 1.2) ,则强制创建 Direct3D 设备失败。 当显示驱动程序未实现到 WDDM 1.2 时,只有 使用功能级别 9.1、9.2 或 9.3 创建的 Direct3D 设备支持视频;因此,如果设置了此标志,运行时仅为功能级别 9.1、9.2 或 9.3 创建 Direct3D 设备。 对于希望优先使用 Direct3D 功能而不是视频的应用程序,建议不要指定此标志。 如果功能级别 10 和更高可用,则运行时将使用该功能级别,而不考虑视频支持。

如果设置了此标志,则无论 BRD 缺少对视频解码的支持,在基本呈现设备 (BRD) 上的设备创建都将成功。 这是因为 Media Foundation 视频堆栈在 BRD 上的软件模式下运行。 在这种情况下,如果强制视频堆栈创建 Direct3D 设备两次 (使用此标志创建一次设备,接下来发现 BRD,然后再次创建没有标志) 的设备,实际上会降低性能。

如果尝试创建驱动程序类型 为 D3D_DRIVER_TYPE_NULLD3D_DRIVER_TYPE_REFERENCED3D_DRIVER_TYPE_SOFTWARE 的 Direct3D 设备,则设备创建在任何 功能级别 都失败,因为没有关联的驱动程序提供视频功能。 如果尝试创建驱动程序类型 为 D3D_DRIVER_TYPE_WARP 的 Direct3D 设备,则设备创建会成功以允许视频的软件回退。

Direct3D 11: 在 Direct3D 11.1 之前不支持此值。

注解

D3D11CreateDeviceD3D11CreateDeviceAndSwapChain 使用设备创建标志。

应用程序可能会动态创建 (并销毁) 线程以提高性能,尤其是在具有多个 CPU 核心的计算机上。 但是,在某些情况下,应用程序需要阻止创建额外的线程。 如果要简化调试、分析代码或开发工具(例如),可能会发生这种情况。 对于这些情况,请使用 D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS 请求运行时和视频驱动程序不创建可能干扰应用程序的任何其他线程。

要求

要求
Header d3d11.h

另请参阅

核心枚举