Compartir a través de


Habilitación de la información de depuración de Direct3D (Direct3D 9)

¿Está intentando obtener más información sobre los objetos direct3D durante la depuración? Por ejemplo, en la siguiente captura de pantalla se muestra lo que normalmente se ve al mirar una interfaz de Direct3D en la ventana de watch.

captura de pantalla de una interfaz direct3d en la ventana de watch

Puede habilitar los objetos de depuración principales para que un objeto reflejado que contenga todas las propiedades del objeto se pueda ver en la ventana de watch. Simplemente incluya los siguientes #define en el código antes del archivo D3D9.h:

#define D3D_DEBUG_INFO

Para habilitar la información de depuración, el #define debe compilarse antes del archivo D3D9.h (cualquier programa que use DXUT habilitará automáticamente D3D_DEBUG_INFO cuando se compile el programa para depurar). Si ejecuta un ejemplo de SDK, puede ver esto en DXStdAfx.h (lo que afecta a todos los ejemplos de C++). También debe ejecutar el entorno de ejecución de depuración de Direct3D (que se puede habilitar desde el Panel de control si es necesario).

Este es un ejemplo con el ejemplo BasicHLSL.

  1. Agregue el #define al archivo Dxstdafx.h antes de la línea 37.
  2. Compile un proyecto de depuración.
  3. Establecer un punto de interrupción en la línea 307 en BasicHLSL.cpp
  4. Ejecute el depurador.

En la captura de pantalla siguiente se muestra el tipo de información detallada que puede obtener sobre un objeto de textura direct3D desde la ventana de watch.

captura de pantalla de un objeto de textura direct3d en la ventana de watch

Nota:

Los nombres de propiedad de objeto son visibles y los valores solo son correctos cuando el tiempo de ejecución de depuración está habilitado. Cuando se ejecuta en el entorno de ejecución comercial, los valores no son válidos.

 

Uso de la pila de llamadas para depuración extendida

Con la depuración de Direct3D habilitada, también puede examinar una pila de llamadas cada vez que se crea un objeto. Esto hará que la aplicación sea muy lenta, pero se puede usar para comprobar si hay fugas de recursos. Para escribir la pila de llamadas, establezca la siguiente clave del Registro en 1:

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

La compilación de la aplicación con la depuración habilitada le proporcionará acceso a esta variable adicional:

  LPCWSTR CreationCallStack;

Esta variable almacenará la pila de llamadas cada vez que se crea un objeto. Esto hará que la aplicación sea muy lenta, pero se puede usar para depurar pérdidas de recursos.

Sugerencias de programación