共用方式為


啟用 Direct3D 除錯資訊(Direct3D 9)

您是否在偵錯期間嘗試找出 Direct3D 對象的詳細資訊? 例如,下列螢幕快照會顯示您在監看式視窗中查看 Direct3D 介面時通常會看到的內容。

監看視窗中 Direct3D 介面的螢幕截圖

您可以啟用核心偵錯物件,以便在監視視窗中檢視包含所有物件屬性的鏡像物件。 只要在 D3D9.h 檔案之前,在您的程式代碼中包含下列 #define:

#define D3D_DEBUG_INFO

若要啟用偵錯資訊,#define 必須在 D3D9.h 檔案之前建置(任何使用 DXUT 的程式都會在編譯程式以進行偵錯時自動啟用D3D_DEBUG_INFO)。 如果您正在執行 SDK 範例,您可以在 DXStdAfx.h 中看到此範例(這會影響所有C++範例)。 您也必須執行偵錯 Direct3D 執行階段(必要時可從控制面板啟用)。

以下是使用 BasicHLSL 範例的範例。

  1. 在行 37 之前,將 #define 新增至 Dxstdafx.h 檔案。
  2. 建置偵錯專案。
  3. 在 BasicHLSL.cpp 中設定第 307 行的斷點
  4. 執行調試程式。

下列螢幕快照顯示,您可以從監視視窗獲得關於 Direct3D 紋理對象的詳細資訊。

檢視視窗中的 direct3d 紋理物件螢幕截圖

注意

當啟用偵錯執行環境時,物件的屬性名稱是可見的,並且屬性的值才會正確。 在零售版本的運行時間環境中運行時,這些值無效。

 

使用呼叫堆疊進行擴充偵錯

啟用 Direct3D 偵錯後,您也可以在每次建立物件時查看呼叫堆疊。 這會讓您的應用程式變慢,但可用來檢查資源流失。 若要寫出呼叫堆疊,請將下列登錄機碼設定為 1:

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

建置已啟用偵錯的應用程式可讓您存取這個額外的變數:

  LPCWSTR CreationCallStack;

此變數會在每次建立物件時儲存呼叫堆疊。 這會讓您的應用程式變慢,但可用來偵錯資源流失。

程式設計秘訣