例外

Direct3D 11 的某些功能未完全由功能级别指定。 本主题介绍在下层硬件上使用 Direct3D 11 时出现异常。 在 (定义功能级别后,可能会添加一个功能,并且需要更新的驱动程序) 或不同的 GPU 实现广泛不同的实现。 功能级别异常可以收集到以下组中:

10Level9 参考部分列出了各种 ID3D11DeviceID3D11DeviceContext 方法在各种 10Level9 功能级别上的行为之间的差异。

扩展格式

扩展格式是添加到 Direct3D 10.1 和 Direct3D 11 的像素格式,适用于功能级别 10_0 和 10_1。 扩展格式需要 Direct3D 10_1 或更高版本的更新驱动程序 () 。 使用 ID3D11Device::CheckFormatSupportID3D11Device::CheckFeatureSupport 查询对这些扩展格式的支持。

扩展格式:

  • 添加了对每个组件资源 8 位的 BGRA 顺序的支持。
  • 允许强制转换整数值交换链缓冲区。 这样,应用程序就可以添加或删除_SRGB后缀或呈现到XR_BIAS交换链。
  • 添加对DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM的可选支持。
  • 保证提供DXGI_FORMAT_R16G16B16A16_FLOAT交换链,就像包含的数据没有 sRGB 编码一样。

除了XR_BIAS格式之外,完全支持或不支持完整的扩展格式集。 XR_BIAS格式为:

  • 在任何 9 级别中不受支持
  • 在 10_0 或 10_1 级别中可选
  • 在 11_0 级别保证

多重采样反别名

MSAA 实现在 GPU 实现中很少常见。 功能级别 10.1 添加了一些定义完善的迷你图,但在功能级别较低时,必须使用 ID3D11Device::CheckMultisampleQualityLevels 显式测试 MSAA。

Texture2D 大小

功能级别保证可以创建最小大小,但是,应用程序可以创建更大的纹理,最多可以达到 GPU 支持的完整大小。 如果超出最大值,应用程序应预期出现 ID3D11Device::CreateTexture2D 等方法失败。

功能级别 9 的适配器的特殊行为

D3D_FEATURE_LEVEL_9_1、D3D_FEATURE_LEVEL_9_2和D3D_FEATURE_LEVEL_9_3的三个最低功能级别共享一个通用实现 DLL,并将 IDXGIAdapter 参数视为 D3D11CreateDevice[AndSwapchain] 作为模板适配器,并在设备创建过程中创建自己的适配器。 这意味着传入创建例程的 IDXGIAdapter 与通过 IDXGIDevice ::GetAdapter 从设备检索的适配器不同。 其影响是,从传入适配器枚举的 IDXGIOutput 不能用于使用任何级别 9 设备进入全屏,因为这些输出不受设备的适配器所有。 最好放弃传入的模板适配器,并使用 IDXGIDevice::GetAdapter 检索设备创建的适配器,可在其中使用 Direct3D 设备接口的 QueryInterface 检索 IDXGIDevice

下层硬件上的 Direct3D 11