适用于 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) 中的新增功能
- DirectWrite for Windows 8 (Windows) 中的新增功能
- 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 结构,该结构具有用于 缩放的字段。 windows 7 不支持使用平台更新 DXGI_SCALING_NONE,并导致调用时 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。
- IDXGIDevice2:: windows 7 平台更新不支持OfferResources 和 IDXGIDevice2::ReclaimResources。 但是,运行时仍允许调用它们,并验证它们是否在非共享资源上正确使用。
- WARP 设备仅支持 功能级别 11.0。 也就是说,通过在 DriverType 参数中传递 D3D_DRIVER_TYPE_WARPD3D11CreateDevice 创建的 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 远程调试工具。 有关详细信息,请参阅 调试层 文档。