Панель команд

На панели «Команды» отображаются вызовы, выполненные приложением, сгруппированные по кадрам и вызовам отрисовки или по пользовательским маркерам.

Первоначальный вид трассировки OpenGL или Vulkan
Рис. 1. Первоначальный вид трассировки OpenGL или Vulkan.
Просмотр трассировки OpenGL
Рисунок 2. Просмотр трассировки OpenGL
Просмотр трассировки Vulkan
Рисунок 3. Просмотр трассировки Vulkan
Просмотр трассировки Vulkan
Рисунок 4. Поиск команды в трассировке Vulkan

Операции

На этой панели вы можете выполнять следующие операции:

Операция Описание
Показать результат Щелкните команду или группу, чтобы обновить другие панели, чтобы отразить состояние после выбранной команды или группы.
Развернуть или свернуть иерархию команд Нажмите серый треугольник слева от группы или дважды щелкните группу, чтобы развернуть или свернуть ее.
Поиск Введите строку в строку поиска в верхней части панели, а затем нажмите клавишу Return (см. предыдущее изображение). Чтобы найти следующее вхождение, убедитесь, что полоса выбрана, и снова нажмите Return .

Установите флажок «Регулярное выражение» , чтобы использовать шаблон поиска по регулярному выражению. Например, glClear.* соответствует обеим командам glClear() и glClearColor() . Вы также можете искать значения параметров команды, такие как buffer: 2 , который используется в glBindBuffer().
Редактировать Щелкните команду правой кнопкой мыши и выберите «Изменить» . В диалоговом окне «Редактирование» измените одно или несколько значений и нажмите «ОК» . Примечание. Это справедливо только для команд Vulkan, но не для команд OpenGL.
Просмотр информации о состоянии или памяти Щелкните аргумент команды, который относится к параметру состояния, например идентификатору текстуры. На панели «Состояние» отображается дополнительная информация. Щелкните адрес памяти или указатель, чтобы открыть панель «Память» . Примечание. Это справедливо только для команд Vulkan, но не для команд OpenGL.
Копировать команды Выберите элементы на панели и нажмите Control+C (или Command+C), чтобы скопировать команды со значениями их аргументов. Вы можете вставить эту информацию в текстовый файл.
Увеличить миниатюру Миниатюра отображается слева от вызова, как показано на следующем изображении. Наведите курсор на миниатюру, чтобы увеличить ее.
ПОДПИСЬ

Иерархия команд 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()