Abilitazione delle informazioni di debug Direct3D (Direct3D 9)

Si sta tentando di scoprire altre informazioni sugli oggetti Direct3D durante il debug? Ad esempio, la schermata seguente mostra ciò che viene in genere visualizzato quando si guarda un'interfaccia Direct3D nella finestra watch.

schermata di un'interfaccia direct3d nella finestra watch

È possibile abilitare gli oggetti di debug principali in modo che un oggetto mirroring contenente tutte le proprietà dell'oggetto possa essere visualizzato nella finestra watch. È sufficiente includere i #define seguenti nel codice prima del file D3D9.h:

#define D3D_DEBUG_INFO

Per abilitare le informazioni di debug, la #define deve essere compilata prima del file D3D9.h (Qualsiasi programma che usa DXUT abilita automaticamente D3D_DEBUG_INFO quando il programma viene compilato per il debug). Se si esegue un esempio di SDK, è possibile visualizzare questo argomento in DXStdAfx.h (che influisce su tutti gli esempi C++). È anche necessario eseguire il runtime Direct3D di debug, che può essere abilitato dal Pannello di controllo se necessario.

Ecco un esempio che usa l'esempio BasicHLSL.

  1. Aggiungere il #define al file Dxstdafx.h prima della riga 37.
  2. Creare un progetto di debug.
  3. Impostare un punto di interruzione alla riga 307 in BasicHLSL.cpp
  4. Eseguire il debugger.

La schermata seguente mostra il tipo di informazioni dettagliate che è possibile ottenere su un oggetto trama Direct3D dalla finestra di watch.

schermata di un oggetto trama diretta3d nella finestra watch

Nota

I nomi delle proprietà dell'oggetto sono visibili e i valori sono corretti solo quando il runtime di debug è abilitato. Quando viene eseguito nel runtime di vendita al dettaglio, i valori non sono validi.

 

Usare lo stack di chiamate per il debug esteso

Con il debug Direct3D abilitato, è anche possibile esaminare uno stack di chiamate ogni volta che viene creato un oggetto. Questo rende l'applicazione molto lenta, ma può essere usata per verificare le perdite di risorse. Per scrivere lo stack di chiamate, impostare la chiave del Registro di sistema seguente su 1:

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

La compilazione dell'applicazione con debug abilitata consente di accedere a questa variabile aggiuntiva:

  LPCWSTR CreationCallStack;

Questa variabile archivierà lo stack di chiamate ogni volta che viene creato un oggetto. Questo rende l'applicazione molto lenta, ma può essere usata per eseguire il debug delle perdite di risorse.

Suggerimenti per la programmazione