O painel "Comandos" exibe as chamadas feitas pelo aplicativo, agrupadas por chamada de frame e desenho ou por marcadores do usuário.
![Visualização inicial de um rastro do OpenGL ou do Vulkan.](https://developer.android.com/static/images/agi/command-pane-images/command-pane-1.png?authuser=19&hl=pt)
![Como visualizar um rastro do OpenGL](https://developer.android.com/static/images/agi/command-pane-images/command-pane-2.png?authuser=19&hl=pt)
![Como visualizar um rastro do Vulkan](https://developer.android.com/static/images/agi/command-pane-images/command-pane-3.png?authuser=19&hl=pt)
![Como visualizar um rastro do Vulkan](https://developer.android.com/static/images/agi/command-pane-images/command-pane-4.png?authuser=19&hl=pt)
Operações
É possível realizar as seguintes operações neste painel:
Operação | Descrição |
---|---|
Mostrar resultado | Clique em um comando ou grupo para atualizar os outros painéis para refletir o estado após o comando ou grupo selecionado. |
Abrir ou fechar a hierarquia de comandos | Clique no triângulo cinza à esquerda de um agrupamento ou clique duas vezes nele para expandi-lo ou recolhê-lo. |
Pesquisar | Digite uma string na barra de pesquisa na parte de cima do painel e pressione Return (veja a imagem anterior). Para encontrar a próxima ocorrência, verifique se
a barra está selecionada e pressione Return novamente. Selecione a caixa Regex para usar um padrão de pesquisa de expressão regular. Por exemplo, glClear.* corresponde aos comandos glClear()
e glClearColor() . Você também pode pesquisar valores
de parâmetros de comando, como buffer: 2 , que é usado em glBindBuffer(). |
Editar | Clique com o botão direito do mouse em um comando e selecione Editar. Na caixa de diálogo Edit, mude um ou mais valores e clique em OK. Observação: isso é válido apenas para comandos do Vulkan, e não para comandos do OpenGL. |
Visualizar informações de estado ou memória | Clique em um argumento de comando que se refere a um parâmetro de estado, como um ID de textura. O painel Estado exibe mais informações. Clique em um endereço ou ponteiro de memória para abrir o painel Memória. Observação: isso é válido apenas para comandos do Vulkan, e não para comandos do OpenGL. |
Copiar comandos | Selecione itens no painel e pressione Control + C (ou Command + C) para copiar comandos com os valores de argumento correspondentes. É possível colar essas informações em um arquivo de texto. |
Ampliar miniatura | A miniatura aparece à esquerda de uma ligação, conforme mostrado na imagem a seguir. Passe o cursor sobre a miniatura para ampliar. |
![LEGENDA](https://developer.android.com/static/images/agi/command-pane-images/command-pane-5.png?authuser=19&hl=pt)
Hierarquia de comandos do OpenGL ES
Os comandos do OpenGL ES são traduzidos para o Vulkan, e os comandos do Vulkan são
analisados. Como resultado, os comandos do OpenGL ES são exibidos com os comandos do OpenGL ES e
do Vulkan mostrados na hierarquia expandida. No exemplo anterior, é possível
ver vários comandos glDrawElement
em RenderPass
. A segunda
hierarquia de comandos glDrawElements
foi expandida e mostra Comandos OpenGL ES
e DrawIndexed. Você pode expandir essas duas hierarquias para mostrar os
comandos do OpenGL ES relacionados, bem como os comandos do Vulkan em que eles foram
traduzidos.
Como não há uma relação direta entre o OpenGL ES e o Vulkan,
pode haver algumas diferenças. Por exemplo, um comando glClear
que ocorre
antes do primeiro comando glDraw*
aparecer antes de um RenderPass
. Se você expandir
a hierarquia do glClear
, não haverá comandos do Vulkan. Isso ocorre porque
a limpeza será adiada e feita como parte do início do RenderPass
do Vulkan.
Depurar marcadores
Dependendo do app, o painel Commands pode conter uma lista muito longa de comandos em um frame. Para melhorar a navegação e a leitura, defina marcadores de depuração que agrupam chamadas em um título na árvore. Isso pode incluir um agrupamento, por exemplo, chamado "Configuração" ou "Mundo de renderização".
Se os marcadores de depuração estiverem ativados, clique no painel Comandos para revelar um link para essas informações. O OpenGL ES tem as seguintes APIs para agrupar comandos:
EXTENSÃO / VERSÃO | ENVIAR | POP |
---|---|---|
KHR_debug (link em inglês) | glPushDebugGroupKHR() |
glPopDebugGroupKHR() |
EXT_debug_marker (link em inglês) | String |
String |
OpenGL ES 3.2 (link em inglês) | String |
String |
O Vulkan tem as seguintes APIs para agrupar comandos:
EXTENSÃO / VERSÃO | ENVIAR | POP |
---|---|---|
VK_EXT_debug_marker (em inglês) | glPushDebugGroupKHR() |
glPopDebugGroupKHR() |