Обновление платформы для 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 для Windows 8 (Windows)
- Новые возможности DirectWrite для Windows 8 (Windows)
- Новые возможности WIC в Windows 8 (Windows)
Сведения о Direct3D и DXGI с обновлением платформы см. в следующих разделах:
После установки обновления платформы интерфейсы, представленные в Direct3D11.1 и DXGI 1.2, будут доступны с частичной функциональностью. Функции этих графических компонентов напрямую связаны с компонентами ядра графики, графическими драйверами и графическим оборудованием. Прежде чем использовать Direct3D11.1 в Windows 7, ознакомьтесь со следующими особенностями:
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 или ниже, за исключением эталонного устройства, которое можно использовать для тестирования пути кода 11.1 в Windows 7. Используйте только функции, доступные на целевых уровнях компонентов, как описано в справочнике по уровню компонентов.
Некоторые новые методы, представленные в DGXI 1.2, не полностью поддерживаются в Обновлении платформы для Windows 7. Вы можете проверить доступность этих функций, вызвав их напрямую и проверив наличие кода ошибки. Убедитесь, что приложения, предназначенные для Windows 7 с обновлением платформы, имеют резервную версию, если нужные функции недоступны. Эти классы функций недоступны в Обновлении платформы для Windows 7:
- Stereo
- Цепочки буферов, не предназначенные для Hwnds
- Уведомления о состоянии окклюзии
- Дублирование рабочего стола
- Ресурсы NT Handle
В частности, следующие 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.
- IDXGIDevice2::OfferResources и IDXGIDevice2::ReclaimResources не поддерживаются в Обновлении платформы для Windows 7. Однако среда выполнения по-прежнему позволяет вызывать их и проверяет, правильно ли они используются в ресурсах, не являющихся общими.
- Устройства WARP поддерживают только уровень компонентов 11.0. То есть устройства WARP, созданные путем передачи D3D_DRIVER_TYPE_WARP в параметре DriverTypeD3D11CreateDevice , не поддерживают 11.1 и не поддерживают общие поверхности.
Для разработчиков, которые в настоящее время работают над приложениями в Microsoft Visual Studio 2010 или более ранних версиях, использующих флаг D3D11_CREATE_DEVICE_DEBUG , имейте в виду, что вызовы D3D11CreateDevice завершатся ошибкой. Это связано с тем, что среда выполнения D3D11.1 теперь требует D3D11_1SDKLayers.dll, а не D3D11SDKLayers.dll. Чтобы получить эту новую библиотеку DLL (D3D11_1SDKLayers.dll), установите пакет SDK для Windows 8, Visual Studio 2012 или средства удаленной отладки Visual Studio 2012. Дополнительные сведения см. в документации по уровню отладки .