适用于 Windows 7 的平台更新
本主题介绍通过适用于 Windows 7 的平台更新提供的 Windows 7 图形堆栈组件的改进。
在 Windows 7 上安装时,适用于 Windows 7 的平台更新会更新 Windows 7,Windows 8中提供的功能。 例如,这些Windows 8组件提供完整的功能:
- Direct2D 1.1 (包括 Direct2D 效果)
- DirectWrite
- Windows 图像处理组件 (WIC)
它们提供部分功能:
- Direct3D 11.1
- DXGI 1.2
例如,此组件不可用:
- DirectComposition (DComp)
有关 Direct2D、DirectWrite 和 WIC 与平台更新的信息,请参阅以下主题:
- Direct2D for Windows 8 (Windows) 的新增功能
- 适用于 Windows 8 (Windows) 的 DirectWrite 中的新增功能
- Windows 8 (Windows) 中 WIC 的新增功能
有关使用平台更新的 Direct3D 和 DXGI 的信息,请参阅以下主题:
安装平台更新后,Direct3D11.1 和 DXGI 1.2 中引入的接口将具有部分功能。 这些图形组件的功能直接绑定到图形内核组件、图形驱动程序和图形硬件。 在 Windows 7 上使用 Direct3D11.1 之前,请熟悉以下细节:
Windows 8引入了 WDDM 1.2 驱动程序模型,该模型为所有功能级别提供了跨关联 API 图面的改进。 阅读 Direct3D11.1 文档时,请了解 新驱动程序 意味着 WDDM 1.2 驱动程序。 这些更新的驱动程序版本以及通过 CheckFeatureSupport 公开的大多数可选功能在 Windows 7 上不可用。 由于无法保证这些可选功能可用,因此请确保应用程序在所需功能不可用时具有适当的回退行为。
有一个重要的例外。 一些功能(例如具有恒定缓冲区偏移量的 PSSetConstantBuffers1 )需要 功能级别 10 及更高级别的新驱动程序,但实际上会模拟功能级别 9。 此仿真在 Windows 7 上提供平台更新。 有关模拟哪些功能的详细信息 ,请参阅D3D11_FEATURE_DATA_D3D11_OPTIONS 。
Windows 8 WDDM 1.2 驱动程序模型支持通过 D3D 功能级别 11.1 公开的新一代硬件。 具有平台更新的 Windows 7 仅支持 WDDM 1.1 驱动程序模型,因此, (平台更新) 不提供功能级别 11.1 硬件支持。 在具有平台更新的 Windows 7 上, D3D11CreateDevice 始终返回 11.0 或更低的功能级别,但可用于在 Windows 7 上测试 11.1 代码路径的参考设备除外。 仅使用目标功能级别上可用的功能,如功能级别参考中所述。
Windows 7 的平台更新并不完全支持 DGXI 1.2 中引入的一些新方法。你可以通过直接调用这些函数并检查错误代码来测试这些函数的可用性。 确保面向具有平台更新的 Windows 7 的应用程序在所需功能不可用时具有回退。 适用于 Windows 7 的平台更新中不提供以下类别的功能:
- 立体声
- 不面向 Hwnds 的交换链
- 封闭状态通知
- 桌面复制
- NT 句柄资源
具体而言,以下 API 将返回DXGI_ERROR_UNSUPPORTED、DXGI_ERROR_INVALID_CALL、E_NOTIMPL或E_INVALIDARG:
- IDXGIFactory2::CreateSwapChainForCoreWindow
- IDXGIFactory2::CreateSwapChainForComposition
- IDXGIFactory2::RegisterStereoStatusWindow
- IDXGIFactory2::RegisterStereoStatusEvent
- IDXGIFactory2::UnregisterStereoStatus
- IDXGIFactory2::RegisterOcclusionStatusWindow
- IDXGIFactory2::RegisterOcclusionStatusEvent
- IDXGIFactory2::UnregisterOcclusionStatus
- IDXGISwapChain1::GetCoreWindow
- IDXGISwapChain1::SetRotation
- IDXGISwapChain1::GetRotation
- IDXGIOutput1::DuplicateOutput
- IDXGIDevice2::EnqueueSetEvent
- IDXGIResource1::CreateSharedHandle
- IDXGIFactory2::GetSharedResourceAdapterLuid
- ID3D11Device1::OpenSharedResource1
- ID3D11Device1::OpenSharedResourceByName
这些 API 存在行为差异,如前所述:
- IDXGIFactory2::CreateSwapChainForHwnd 采用 DXGI_SWAP_CHAIN_DESC1 结构,该结构具有 用于缩放的字段。 DXGI_SCALING_NONE 在 Windows 7 上不支持平台更新,并导致 CreateSwapChainForHwnd 在调用时返回DXGI_ERROR_INVALID_CALL。
- IDXGISwapChain1::SetBackgroundColor 仅在使用 DXGI_SCALING_NONE在交换链上设置时才有用。 其值仍会存储并可以检索,但不起作用。
- IDXGIDisplayControl::IsStereoEnabled、 IDXGIFactory2::IsWindowedStereoEnabled 和 IDXGISwapChain1::IsTemporaryMonoSupported 均返回 FALSE。
- 添加了 IDXGIOutput1::GetDisplayModeList1 和 IDXGIOutput1::FindClosestMatchingMode1,以促进立体声显示模式。 Windows 7 的平台更新不支持立体声,因此此方法等效于 IDXGIOutput::FindClosestMatchingMode作为DXGI_MODE_DESC1。立体声始终为 FALSE。
- Windows 7 的平台更新不支持 IDXGIDevice2::OfferResources 和 IDXGIDevice2::ReclaimResources。 但是,运行时仍允许调用它们,并执行验证是否在非共享资源上正确使用它们。
- WARP 设备仅支持 功能级别 11.0。 也就是说,通过在 D3D11CreateDevice 的 DriverType 参数中传递D3D_DRIVER_TYPE_WARP创建的 WARP 设备不支持 11.1,也不支持共享图面。
对于当前使用 D3D11_CREATE_DEVICE_DEBUG 标志在 Microsoft Visual Studio 2010 或更早版本中处理应用程序的开发人员,请注意,调用 D3D11CreateDevice 将失败。 这是因为 D3D11.1 运行时现在需要D3D11_1SDKLayers.dll而不是D3D11SDKLayers.dll。 若要获取此新 DLL (D3D11_1SDKLayers.dll) ,请安装 Windows 8 SDK、Visual Studio 2012 或 Visual Studio 2012 远程调试工具。 有关详细信息,请参阅 调试层 文档。