次の方法で共有


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

デバッグ中に Direct3D オブジェクトの詳細を確認しようとしていますか? たとえば、次のスクリーン ショットは、watch ウィンドウで Direct3D インターフェイスを見たときに通常表示される内容を示しています。

watch ウィンドウの direct3d インターフェイスのスクリーン ショット

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

#define D3D_DEBUG_INFO

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

BasicHLSL サンプルを使用する例を次に示します。

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

次のスクリーン ショットは、watch ウィンドウから Direct3D テクスチャ オブジェクトに関して取得できる詳細情報の種類を示しています。

watch ウィンドウでの direct3d テクスチャ オブジェクトのスクリーン ショット

Note

オブジェクト プロパティ名が表示され、値はデバッグ ランタイムが有効になっている場合にのみ正しいです。 小売ランタイムに対して を実行する場合、値は無効です。

 

拡張デバッグに呼び出し履歴を使用する

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

\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Direct3D\\
D3D9Debugging\\EnableCreationStack

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

  LPCWSTR CreationCallStack;

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

プログラミングのヒント