共用方式為


啟用 Direct3D 偵錯資訊 (Direct3D 9)

您嘗試在偵錯期間找出 Direct3D 物件的詳細資訊嗎? 例如,下列螢幕擷取畫面顯示您在watch視窗中查看 Direct3D 介面時通常會看到的內容。

watch視窗中 direct3d 介面的螢幕擷取畫面

您可以啟用核心偵錯物件,以便在watch視窗中檢視包含物件所有屬性的鏡像物件。 只要在 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. 執行偵錯工具。

下列螢幕擷取畫面顯示您可以從 watch 視窗取得 Direct3D 紋理物件的詳細資訊類型。

watch視窗中 direct3d 紋理物件的螢幕擷取畫面

注意

物件屬性名稱是可見的,而且只有在啟用偵錯執行時間時才正確。 針對零售執行時間執行時,這些值無效。

 

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

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

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

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

  LPCWSTR CreationCallStack;

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

程式設計提示