Lista de eventos do gráfico
Use a Lista de Eventos de Gráficos no Diagnóstico de Gráficos do Visual Studio para explorar os eventos Direct3D registrados durante a renderização de um quadro do jogo ou do aplicativo.
Esta é a janela Lista de Eventos de Gráficos:
Dica
A partir da atualização 3 do Visual Studio 2013, as janelas da ferramenta Diagnóstico de Gráficos são hospedadas em uma cópia independente do shell do Visual Studio.Esse shell personalizado, chamado de análise de gráficos elimina opções e menus desnecessários, caso contrário, o fluxo de trabalho e a lista de eventos de gráficos são os mesmos de antes.Para obter mais informações sobre essa alteração, consulte Visão geral do diagnóstico de gráficos.
Usando a lista de eventos
Quando você seleciona um evento na lista de eventos, isso se reflete nas informações exibidas por outras ferramentas de Diagnóstico de Gráficos. Com a lista de eventos com essas outras ferramentas, você pode examinar detalhadamente um problema de renderização para determinar sua causa. Para saber mais sobre como você pode resolver problemas de renderização usando a lista de eventos com outras ferramentas de diagnóstico de gráficos, consulte Exemplos de diagnóstico do gráfico.
O uso dos recursos da lista de eventos de maneira efetiva é importante para contornar quadros complexos que podem conter milhares de eventos. Para usar a lista de eventos de maneira efetiva, escolha a exibição que funcione melhor para você, use a pesquisa para filtrar a lista de eventos, siga os links para saber mais sobre os objetos Direct3D associados a um evento e use os botões de seta para alternar rapidamente chamadas de desenho.
Exibições da lista de eventos
A lista de eventos oferece suporte a duas exibições diferentes que organizam eventos de gráficos de maneiras distintas para dar suporte ao fluxo de trabalho e às preferências. A primeira exibição é o modo de exibição de chamadas de desenho, que organiza eventos e seu estado associado de maneira hierárquica. A segunda exibição é o modo de exibição da linha do tempo, que organiza eventos cronologicamente, em uma lista plana.
A exibição Chamadas de Desenho
Exibe eventos capturados e seu estado em uma hierarquia. O nível superior da hierarquia é constituído de eventos como chamadas de desenho, limpezas, presentes e os que lidam com exibições. Na lista de eventos, é possível expandir chamadas de desenho para exibir o estado atual do dispositivo no momento da chamada de desenho. E você ainda pode expandir cada tipo de estado para exibir os eventos que definem seus valores. Nesse nível, também é possível ver se um determinado estado foi definido em um quadro anterior ou se ele foi definido mais de uma vez desde a chamada de desenho mais recente.A exibição Linha do Tempo
Exibe cada evento capturado em ordem cronológica. Essa forma de organizar a lista de eventos é a mesma de versões anteriores do Visual Studio.
Para alterar o modo de exibição da lista de eventos
- Na janela Lista de Eventos de Gráficos, acima da lista de eventos, localize o menu suspenso Exibir e escolha a exibição Linha do Tempo ou Chamadas de Desenho.
Filtrando eventos
É possível usar a caixa Pesquisar, localizada no canto superior direito da janela Lista de Eventos de Gráficos, para filtrar a lista de eventos e incluir apenas eventos cujos nomes contenham palavras-chave específicas. Você pode especificar palavras-chave únicas como Vertex, como mostrado na ilustração anterior, ou várias palavras-chave usando uma lista delimitada por ponto-e-vírgula como Draw;Primitive, que compara eventos que tenham Draw ou Primitive em seus nomes. As pesquisas diferenciam espaço em branco. Por exemplo, VSSet e VS Set são pesquisas diferentes. Assim, não se esqueça de formar pesquisas com cuidado.
Alternando entre chamadas de desenho
Como o exame de chamadas Draw é especialmente importante, é possível usar os botões Ir para a próxima chamada de desenho e Ir para a chamada de desenho anterior, localizados no canto superior esquerdo da janela Lista de Eventos de Gráficos, para encontrar e alternar rapidamente entre chamadas de desenho.
Links a objetos de gráficos
Para entender determinados eventos de gráficos, talvez sejam necessárias informações adicionais sobre o estado do dispositivo atual ou sobre os objetos Direct3D mencionados pelo evento. Muitos eventos fornecem links a essas informações, que é possível seguir para obter mais detalhes.
Tipos de eventos e marcadores de eventos
Os eventos exibidos na lista de eventos são organizados em quatro categorias: eventos gerais, eventos de desenho, grupos de eventos definidos pelo usuário e marcadores de evento definidos pelo usuário. Exceto no caso de eventos em geral, cada evento é exibido com um ícone que indica a categoria a que pertence.
Ícone |
Descrição do evento |
---|---|
(sem ícone) |
|
|
|
|
|
|
Eventos definidos pelo usuário
Os eventos definidos pelo usuário são específicos do aplicativo. É possível usá-los para correlacionar eventos significativos ocorridos no aplicativo com eventos na Lista de Eventos de Gráficos. Por exemplo, é possível criar grupos de eventos definidos pelo usuário para organizar eventos relacionados, como os que renderizam a interface do usuário, em grupos ou em hierarquias de forma que você possa navegar na lista de eventos mais facilmente ou criar marcadores quando determinados tipos de objetos forem utilizados para encontrar de maneira fácil os eventos de gráficos na lista de eventos.
Para criar grupos e marcadores no aplicativo, você usa as mesmas APIs fornecidas pelo Direct3D a serem usadas por outras ferramentas de depuração do Direct3D. A tabela a seguir resume as APIs que é possível usar para criar grupos e marcadores em versões diferentes do Direct3D.
Descrição da API |
ID3D11DeviceContext2 (Direct3D 11.2) |
ID3DUserDefinedAnnotation (Direct3D 11.1) |
Família D3DPerf_ API (Direct3D 11.0 e anteriores) |
---|---|---|---|
Iniciar um grupo de eventos |
BeginEventInt |
BeginEvent |
D3DPerf_BeginEvent |
Terminar um grupo de eventos |
EndEventInt |
EndEvent |
D3DPerf_EndEvent |
Criar um marcador de evento |
SetMarkerInt |
SetMarker |
D3DPerf_SetMarker |
É possível usar qualquer uma dessas APIs compatíveis com a versão do Direct3D. Por exemplo, se estiver segmentando a API Direct3D 11.1, você poderá usar SetMarker ou D3DPerf_SetMarker para criar um marcador de evento, mas não SetMarkerInt, porque ele só está disponível no Direct3D 11.2, e não é possível misturar aqueles compatíveis com versões diferentes do Direct3D no mesmo aplicativo.
Consulte também
Tarefas
Instruções passo a passo: objetos ausentes devido ao estado do dispositivo