Compartilhar via


Habilitando informações de depuração do Direct3D (Direct3D 9)

Você está tentando descobrir mais informações sobre objetos Direct3D durante a depuração? Por exemplo, a captura de tela a seguir mostra o que você normalmente vê quando você olha para uma interface Direct3D na janela watch.

captura de tela de uma interface direct3d na janela watch

Você pode habilitar os objetos de depuração principais para que um objeto espelhado que contenha todas as propriedades do objeto possa ser exibido na janela watch. Basta incluir o seguinte #define em seu código antes do arquivo D3D9.h:

#define D3D_DEBUG_INFO

Para habilitar informações de depuração, o #define deve ser criado antes do arquivo D3D9.h (qualquer programa que use DXUT habilitará automaticamente D3D_DEBUG_INFO quando o programa for compilado para depuração). Se você estiver executando um exemplo de SDK, poderá ver isso em DXStdAfx.h (que afeta todos os exemplos de C++). Você também deve estar executando o runtime do Direct3D de depuração (que pode ser habilitado a partir do Painel de Controle, se necessário).

Aqui está um exemplo usando o exemplo BasicHLSL.

  1. Adicione o #define ao arquivo Dxstdafx.h antes da linha 37.
  2. Crie um projeto de depuração.
  3. Definir um ponto de interrupção na linha 307 em BasicHLSL.cpp
  4. Execute o depurador.

A captura de tela a seguir mostra o tipo de informações detalhadas que você pode obter sobre um objeto de textura Direct3D da janela watch.

captura de tela de um objeto de textura direct3d na janela watch

Observação

Os nomes de propriedade do objeto são visíveis e os valores estão corretos somente quando o runtime de depuração está habilitado. Ao executar no runtime de varejo, os valores são inválidos.

 

Usar a pilha de chamadas para depuração estendida

Com a depuração do Direct3D habilitada, você também pode examinar uma pilha de chamadas sempre que um objeto é criado. Isso tornará seu aplicativo muito lento, mas pode ser usado para marcar para vazamentos de recursos. Para gravar a pilha de chamadas, defina a seguinte chave do Registro como 1:

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

A criação do aplicativo com a depuração habilitada lhe dará acesso a essa variável adicional:

  LPCWSTR CreationCallStack;

Essa variável armazenará a pilha de chamadas sempre que um objeto for criado. Isso tornará seu aplicativo muito lento, mas pode ser usado para depurar vazamentos de recursos.

Dicas de programação