例外

Direct3D 11 の機能のなかには、機能レベルでは完全に指定できないものがあります。これは、機能レベルを定義した後で追加した機能があったり (更新したドライバーが必要)、各種 GPU の実装内容が大きく異なっていたりするためです。機能レベルの例外は次のグループに分類できます。

  • 拡張されたフォーマット
  • マルチサンプルのアンチエイリアシング
  • Texture2D のサイズ
  • 機能レベル 9 のアダプターの特殊な動作

拡張されたフォーマット

拡張されたフォーマットは、10_0 および 10_1 の機能レベルで Direct3D 10.1 および Direct3D 11 に追加されたピクセル フォーマットです。Direct3D 10_1 またはそれより前のバージョンでは、拡張されたフォーマット用に更新したドライバーを必要とします。これらの拡張されたフォーマットのサポートについて照会するには、ID3D11Device::CheckFormatSupport および ID3D11Device::CheckFeatureSupport を使用します。

拡張されたフォーマットの特徴は次のとおりです。

  • 8 ビットの成分別リソースの BGRA 順に対するサポートが追加されています。
  • 整数値のスワップ チェーン バッファーのキャストが可能です。これにより、_SRGB サフィックスの追加や削除、XR_BIAS スワップ チェーンへのレンダリングなどがアプリケーションでできるようになります。
  • DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM のオプションのサポートが追加されています。
  • 格納されているデータが sRGB でエンコードされていないかのように、DXGI_FORMAT_R16G16B16A16_FLOAT スワップ チェーンを表現できます。

拡張されたフォーマットは、すべてが全面的にサポートされているか、どれもサポートされていないかのどちらかです。ただし、XR_BIAS フォーマットは例外です。XR_BIAS フォーマットのサポートは次のとおりです。

  • 9 レベルでは、どのレベルでもサポートされていません。
  • 10_0 レベルまたは 10_1 レベルのどちらかでオプションになっています。
  • 11_0 レベルでは動作が保証されています。

マルチサンプルのアンチエイリアシング

MSAA の実装は、GPU 実装間でほとんど共通していません。機能レベル 10.1 で明確に定義された最低条件がいくつか追加されましたが、それより下の機能レベルでは ID3D11Device::CheckMultisampleQualityLevels を使用して MSAA を明示的にテストする必要があります。

Texture2D のサイズ

各機能レベルによって、それぞれで定義されている最小サイズのテクスチャーは確実に作成できますが、GPU がサポートする最大サイズまでのテクスチャーをアプリケーションで作成することもできます。この最大サイズを超えると ID3D11Device::CreateTexture2D などのメソッドによりエラーが発生することを、アプリケーション側で想定しておく必要があります。

機能レベル 9 のアダプターの特殊な動作

下位の 3 つの機能レベル D3D_FEATURE_LEVEL_9_1、D3D_FEATURE_LEVEL_9_2、および D3D_FEATURE_LEVEL_9_3 では、共通の実装 DLL が使用され、D3D11CreateDevice[AndSwapchain]IDXGIAdapter 引数がテンプレート アダプターとして扱われて、デバイス作成の過程で固有のアダプターが作成されます。つまり、作成ルーチンに渡される IDXGIAdapter は、IDXGIDevice::GetAdapter によってデバイスから取得するアダプターとは異なることになります。この影響として、渡されたアダプターで列挙される IDXGIOutputs を使用しても、それらの出力は目的とするデバイスのアダプターのものではないため、どのレベル 9 デバイスでも全画面表示ができません。渡されたテンプレート アダプターを破棄し、IDXGIDevice::GetAdapter を使用してデバイスの作成済みアダプターを取得することをお勧めします。この場合、IDXGIDevice は、Direct3D デバイス インターフェイスから QueryInterface を使用して取得できます。

関連項目

ダウンレベルのハードウェア上の Direct3D 11