На панели «Команды» отображаются вызовы, выполненные приложением, сгруппированные по кадрам и вызовам отрисовки или по пользовательским маркерам.
![Первоначальный вид трассировки OpenGL или Vulkan](https://developer.android.com/static/images/agi/command-pane-images/command-pane-1.png?authuser=19&hl=ru)
![Просмотр трассировки OpenGL](https://developer.android.com/static/images/agi/command-pane-images/command-pane-2.png?authuser=19&hl=ru)
![Просмотр трассировки Vulkan](https://developer.android.com/static/images/agi/command-pane-images/command-pane-3.png?authuser=19&hl=ru)
![Просмотр трассировки Vulkan](https://developer.android.com/static/images/agi/command-pane-images/command-pane-4.png?authuser=19&hl=ru)
Операции
На этой панели вы можете выполнять следующие операции:
Операция | Описание |
---|---|
Показать результат | Щелкните команду или группу, чтобы обновить другие панели, чтобы отразить состояние после выбранной команды или группы. |
Развернуть или свернуть иерархию команд | Нажмите серый треугольник слева от группы или дважды щелкните группу, чтобы развернуть или свернуть ее. |
Поиск | Введите строку в строку поиска в верхней части панели, а затем нажмите клавишу Return (см. предыдущее изображение). Чтобы найти следующее вхождение, убедитесь, что полоса выбрана, и снова нажмите Return . Установите флажок «Регулярное выражение» , чтобы использовать шаблон поиска по регулярному выражению. Например, glClear.* соответствует обеим командам glClear() и glClearColor() . Вы также можете искать значения параметров команды, такие как buffer: 2 , который используется в glBindBuffer(). |
Редактировать | Щелкните команду правой кнопкой мыши и выберите «Изменить» . В диалоговом окне «Редактирование» измените одно или несколько значений и нажмите «ОК» . Примечание. Это справедливо только для команд Vulkan, но не для команд OpenGL. |
Просмотр информации о состоянии или памяти | Щелкните аргумент команды, который относится к параметру состояния, например идентификатору текстуры. На панели «Состояние» отображается дополнительная информация. Щелкните адрес памяти или указатель, чтобы открыть панель «Память» . Примечание. Это справедливо только для команд Vulkan, но не для команд OpenGL. |
Копировать команды | Выберите элементы на панели и нажмите Control+C (или Command+C), чтобы скопировать команды со значениями их аргументов. Вы можете вставить эту информацию в текстовый файл. |
Увеличить миниатюру | Миниатюра отображается слева от вызова, как показано на следующем изображении. Наведите курсор на миниатюру, чтобы увеличить ее. |
![ПОДПИСЬ](https://developer.android.com/static/images/agi/command-pane-images/command-pane-5.png?authuser=19&hl=ru)
Иерархия команд OpenGL ES
Команды OpenGL ES транслируются в Vulkan, и команды Vulkan анализируются. В результате команды OpenGL ES отображаются вместе с командами OpenGL ES и Vulkan в расширенной иерархии. В предыдущем примере вы можете увидеть несколько команд glDrawElement
в разделе RenderPass
. Вторая иерархия команд glDrawElements
была расширена и показывает команды OpenGL ES и DrawIndexed . Вы можете развернуть обе эти иерархии, чтобы отобразить связанные команды OpenGL ES, а также команды Vulkan, в которые они были преобразованы.
Поскольку между OpenGL ES и Vulkan нет однозначной связи, могут быть некоторые различия. Например, команда glClear
, которая появляется перед первой командой glDraw*
появляется перед RenderPass
. Если вы расширите иерархию glClear
, команд Vulkan не будет. Это связано с тем, что очистка будет отложена и выполнена как часть запуска Vulkan RenderPass
.
Маркеры отладки
В зависимости от вашего приложения панель «Команды» может содержать очень длинный список команд в одном кадре. Для лучшей навигации и читаемости вы можете определить маркеры отладки, которые группируют вызовы под заголовком в дереве. Это может быть группа, например, с названием «Настройка» или «Рендеринг мира».
Если маркеры отладки включены, щелкните панель «Команды» , чтобы отобразить ссылку на эту информацию. OpenGL ES имеет следующие API для группировки команд:
РАСШИРЕНИЕ / ВЕРСИЯ | ТОЛКАТЬ | ПОП |
---|---|---|
KHR_debug | glPushDebugGroupKHR() | glPopDebugGroupKHR() |
EXT_debug_marker | String | String |
OpenGL ES 3.2 | String | String |
Vulkan имеет следующие API для группировки команд:
РАСШИРЕНИЕ / ВЕРСИЯ | ТОЛКАТЬ | ПОП |
---|---|---|
VK_EXT_debug_marker | glPushDebugGroupKHR() | glPopDebugGroupKHR() |