Windows 7 用プラットフォーム更新プログラム
このトピックでは、Windows 7 用プラットフォーム更新プログラムを通じて使用できるようになる Windows 7 グラフィックス スタックのコンポーネントの機能強化について説明します。
Windows 7 にインストールすると、Windows 7 用プラットフォーム更新プログラムによって Windows 7 が更新され、Windows 8で使用できる機能が提供されます。 たとえば、次のWindows 8 コンポーネントは、完全な機能で使用できるようになります。
- Direct2D 1.1 (Direct2D 効果を含む)
- DirectWrite
- Windows Imaging Component (WIC)
これらは部分的な機能を提供します。
- Direct3D 11.1
- DXGI 1.2
たとえば、このコンポーネントは使用できません。
- DirectComposition (DComp)
プラットフォームの更新プログラムを使用した Direct2D、DirectWrite、WIC に関する情報については、次のトピックを参照してください。
- Direct2D for Windows 8 (Windows) の新機能
- Windows 8 のDirectWriteの新機能 (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 では使用できません。 これらのオプション機能が使用できる保証はないため、目的の機能が使用できない場合に、アプリケーションに適切なフォールバック動作があることを確認してください。
重要な例外が 1 つあります。 定数バッファー オフセットを持つ 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 コード パスをテストするために使用できる参照デバイスを除きます。 機能レベルのリファレンスで説明されているように、対象の機能レベルで使用できる機能のみを使用します。
DGXI 1.2 で導入された一部の新しいメソッドは、Windows 7 用プラットフォーム更新プログラムでは完全にはサポートされていません。これらの関数を直接呼び出してエラー コードを確認することで、これらの関数の可用性をテストできます。 目的の機能が使用できない場合は、プラットフォーム更新プログラムで 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::OfferResources と IDXGIDevice2::ReclaimResources は、Windows 7 用プラットフォーム更新プログラムではサポートされていません。 ただし、ランタイムは引き続き呼び出しを許可し、共有されていないリソースで正しく使用されていることを検証します。
- WARP デバイスでは 、機能レベル 11.0 のみがサポートされます。 つまり、D3D11CreateDevice の DriverType パラメーターにD3D_DRIVER_TYPE_WARPを渡すことによって作成された WARP デバイスは、11.1 をサポートせず、共有サーフェスもサポートしません。
現在、microsoft Visual Studio 2010 以前のアプリケーションで D3D11_CREATE_DEVICE_DEBUG フラグを使用して作業している開発者の場合、 D3D11CreateDevice の呼び出しは失敗します。 これは、D3D11.1 ランタイムにD3D11SDKLayers.dllではなくD3D11_1SDKLayers.dllが必要になったためです。 この新しい DLL (D3D11_1SDKLayers.dll) を取得するには、Windows 8 SDK、Visual Studio 2012、または Visual Studio 2012 リモート デバッグ ツールをインストールします。 詳細については、 デバッグ レイヤー のドキュメントを参照してください。