ソフトウェア レイヤー
Direct3D 11 ランタイムは、コアの基本的な機能から始まり、外部レイヤーでオプションの開発者支援機能を構築するレイヤーで構築されます。 このセクションでは、各レイヤーの機能について説明します。
一般的なルールとして、レイヤーは機能を追加しますが、既存の動作は変更しません。 たとえば、コア関数の戻り値は、インスタンス化されるデバッグ レイヤーとは無関係に同じですが、デバッグ レイヤーがインスタンス化された場合は追加のデバッグ出力が提供される場合があります。
デバイスの作成時にレイヤーを作成するには、 D3D11CreateDevice または D3D11CreateDeviceAndSwapChain を 呼び出し、1 つ以上の D3D11_CREATE_DEVICE_FLAG 値を指定します。
Direct3D 11 には、次のランタイム レイヤーが用意されています。
コア レイヤー
コア レイヤーは既定で存在します。API とデバイス ドライバーの間に非常に薄いマッピングを提供し、高頻度の呼び出しのオーバーヘッドを最小限に抑えます。 コア レイヤーはパフォーマンスに不可欠であるため、重要な検証のみを実行します。 残りのレイヤーは省略可能です。
デバッグ レイヤー
デバッグ レイヤーは、パラメーターと整合性に関して広範な追加の検証を行うためのものです (たとえばシェーダー リンケージとリソースのバインドの検証、パラメーターの整合性の検証、エラーの説明のレポート)。
デバッグ レイヤーをサポートするデバイスを作成するには、(D3D11SDKLayers.dllを取得するために) DirectX SDK をインストールし、D3D11CreateDevice 関数または D3D11CreateDeviceAndSwapChain 関数を呼び出すときにD3D11_CREATE_DEVICE_DEBUG フラグを指定する必要があります。 デバッグ レイヤーを有効にしてアプリケーションを実行すると、アプリケーションの速度が大幅に低下します。 ただし、配布する前にアプリケーションにエラーと警告がクリーンされるようにするには、デバッグ レイヤーを使用します。 詳細については、「 デバッグ レイヤーを使用したアプリのデバッグ」を参照してください。
Note
Windows 7 プラットフォーム更新プログラム (KB2670838) または Windows 8.x を使用する Windows 7 の場合、デバッグ レイヤーをサポートするデバイスを作成するには、Windows 8.x 用の Windows ソフトウェア開発キット (SDK) をインストールしてD3D11_1SDKLayers.dll。
Note
Windows 10の場合、デバッグ レイヤーをサポートするデバイスを作成するには、"グラフィックス ツール" オプション機能を有効にします。 [設定] パネルの [システム]、[アプリ & の機能]、[オプションの機能の管理]、[機能の追加] の順に移動し、[グラフィックス ツール] を探します。
Note
DirectX アプリをリモートでデバッグする方法については、「リモートでの DirectX アプリのデバッグ」を参照してください。
または、DirectX SDK の一部として含まれる DirectX コントロール パネルを使用して、デバッグ フラグを有効または無効にすることができます。
デバッグ レイヤーによってメモリ リークがリストされると、オブジェクト インターフェイス ポインターのリストがフレンドリ名とともに出力されます。 既定のフレンドリ名は "<unnamed>" です。 フレンドリ名は、 ID3D11DeviceChild::SetPrivateData メソッドと D3Dcommon.h 内 のWKPDID_D3DDebugObjectName GUID を使用して設定できます。 たとえば、mytexture.jpgの SDKLayer 名で pTexture に名前を付ける場合は、次のコードを使用します。
const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
一般的に、このような呼び出しは本番バージョンのコンパイル時に除外してください。
関連トピック