Partilhar via


Ativando 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 olha para uma interface Direct3D na janela de observação.

captura de tela de uma interface Direct3D na janela de observação

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

#define D3D_DEBUG_INFO

Para habilitar as informações de depuração, o #define deve ser construído antes do arquivo D3D9.h (Qualquer programa usando DXUT ativará 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 a executar a versão de depuração do runtime do Direct3D (que pode ser ativada no Painel de Controlo, se necessário).

Aqui está um exemplo usando o BasicHLSL Sample.

  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 na janela de observação.

captura de tela de um objeto de textura Direct3D na janela de observação

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. Quando executado em relação ao tempo de execução de varejo, os valores são inválidos.

 

Utilizar a pilha de chamadas para depuração avançada

Com a depuração do Direct3D ativada, pode-se também examinar a pilha de chamadas cada vez que um objeto é criado. Isso tornará seu aplicativo muito lento, mas pode ser usado para verificar se há vazamentos de recursos. Para escrever a pilha de chamadas, defina a seguinte chave do registo como 1:

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

Construir seu aplicativo com debug ativado lhe dará acesso a esta 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