例外

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 从设备检索到的适配器不同。 这样做的影响是,从传入适配器枚举的 IDXGIOutputs 不能用于使用任何级别 9 设备进入全屏,因为这些输出不归设备的适配器所有。 最好放弃传入的模板适配器,并使用 IDXGIDevice::GetAdapter 检索设备创建的适配器,其中 IDXGIDevice 可以使用 Direct3D 设备接口的 QueryInterface 进行检索。

下层硬件上的 Direct3D 11