次の方法で共有


Direct3D デバッグ情報の有効化 (Direct3D 9)

デバッグ中に Direct3D オブジェクトに関する詳細を検索しますか。たとえば、ウォッチ ウィンドウで Direct3D インターフェイスを見ると、通常は次のようなものが表示されます。

Ee418554.D3D_DEBUG_INFO1(ja-jp,VS.85).gif

オブジェクトのプロパティをすべて含むミラー オブジェクトをウォッチ ウィンドウに表示できるように、コア デバッグ オブジェクトを有効にできます。単に D3D9.h ファイルの前、コードに次の #define を含めてください。

 #define D3D_DEBUG_INFO 

デバッグ情報を有効にするには、#define は D3D9.h ファイルの前にビルドする必要があります (DXUT を使用しているプログラムは、プログラムがデバッグのためにコンパイルされる際に D3D_DEBUG_INFO を自動的に有効にします)。SDK サンプルを実行している場合、これは DXStdAfx.h で確認できます (これはすべての C++ サンプルに影響します)。また、デバッグ Direct3D ランタイムも実行する必要があります (必要に応じてコントロール パネルから有効にできます)。

次に、BasicHLSL Sample の使用例を示します。

  1. Dxstdafx.h ファイルの行 37 の前に #define を追加します。
  2. デバッグ プロジェクトをビルドします。
  3. BasicHLSL.cpp の行 307 にブレークポイントを設定します。
  4. デバッガーを実行します。

ウォッチ ウィンドウからは、Direct3D テクスチャー オブジェクトに関する次のような情報を取得できます。

Ee418554.D3D_DEBUG_INFO2(ja-jp,VS.85).gif

    

オブジェクトのプロパティ名が表示されますが、この値はデバッグのランタイムが有効な場合のみ正確です。リテール ランタイムに対して実行するときは、値は無効です。

拡張デバッグの呼び出し履歴の使用

Direct3D デバッグを有効にすると、オブジェクトが作成されるたびに呼び出し履歴も確認できます。これによって、アプリケーションのパフォーマンスはかなり遅くなりますが、リソース リークのチェックに使用できます。呼び出し履歴を書き出すには、次のレジストリ キーを 1 に設定します。

 ¥¥HKEY_LOCAL_MACHINE¥¥SOFTWARE¥¥Microsoft¥¥Direct3D¥¥ D3D9Debugging¥¥EnableCreationStack 

アプリケーションをデバッグを有効にしてビルドすると、以下の追加の変数にアクセスできます。

   LPCWSTR CreationCallStack; 

この変数は、オブジェクトが作成されるたびに呼び出し履歴を格納します。これによって、アプリケーションのパフォーマンスはかなり遅くなりますが、リソース リークのデバッグに使用できます。