Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
На панели «Команды» отображаются вызовы, выполненные приложением, сгруппированные по кадрам и вызовам отрисовки или по пользовательским маркерам.
Рис. 1. Первоначальный вид трассировки OpenGL или Vulkan. Рисунок 2. Просмотр трассировки OpenGL Рисунок 3. Просмотр трассировки 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 для группировки команд:
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Commands pane\n\nThe Commands pane displays the calls made by the application, grouped by frame and draw call or by user markers.\n**Figure 1.**Initial View of either an OpenGL or Vulkan trace **Figure 2.**Viewing an OpenGL trace **Figure 3.**Viewing a Vulkan trace **Figure 4.**Searching for a command in a Vulkan trace\n\nOperations\n----------\n\nYou can perform the following operations in this pane:\n\n| Operation | Description |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Show result | Click a command or group to update the other panes to reflect the state after the selected command or group. |\n| Expand or collapse the command hierarchy | Click the gray triangle to the left of a grouping or double-click the grouping to expand or collapse it. |\n| Search | Type a string in the search bar at the top of the pane, and then press **Return** (see the preceding image). To find the next occurrence, make sure the bar is selected and press **Return** again. Select the **Regex** box to use a regular expression search pattern. For example, `glClear.*` matches both commands `glClear()` and `glClearColor()`. You can also search for command parameter values such as buffer: `2`, which is used in `glBindBuffer().` |\n| Edit | Right-click a command and select **Edit** . In the **Edit** dialog, change one or more values and click **OK**. Note: This is only valid for Vulkan commands, and not for OpenGL commands. |\n| View state or memory information | Click a command argument that refers to a state parameter, such as a texture ID. The **State** pane displays additional information. Click a memory address or pointer to open the **Memory** pane. Note: This is only valid for Vulkan commands, and not for OpenGL commands. |\n| Copy commands | Select items in the pane and press Control+C (or Command+C) to copy commands with their argument values. You can paste this information into a text file. |\n| Magnify thumbnail | The thumbnail appears to the left of a call as shown in the following image. Hover the cursor over the thumbnail to enlarge it. |\n\nOpenGL ES command hierarchy\n---------------------------\n\nOpenGL ES commands are translated to Vulkan, and the Vulkan commands are\nanalyzed. As a result, OpenGL ES commands are shown with both OpenGL ES and\nVulkan commands shown in the expanded hierarchy. In the preceding example, you can\nsee multiple `glDrawElement` commands under the `RenderPass`. The second\n`glDrawElements` command hierarchy was expanded, and shows **OpenGL ES Commands**\nand **DrawIndexed**. You can expand both of these hierarchies to show the\nrelated OpenGL ES commands, as well as the Vulkan commands that they were translated\ninto.\n\nBecause there isn't a one-to-one relationship between OpenGL ES and Vulkan,\nthere may be some differences. For example, a `glClear` command that occurs\nbefore the first `glDraw*` command appears before a `RenderPass`. If you expand\nthe hierarchy of the `glClear`, there will be no Vulkan commands. That is because\nthe clear will be deferred and done as part of starting the Vulkan `RenderPass`.\n\nDebug markers\n-------------\n\nDepending on your app, the **Commands** pane can contain a very long list of\ncommands within one frame. For better navigation and readability, you can define\ndebug markers that group calls together under a heading in the tree. This could\ninclude a grouping, for example, named \"Setup\" or \"Render World.\"\n\nIf debug markers are enabled, click the **Commands** pane to reveal a\nlink to this information. OpenGL ES has the following APIs to group commands:\n\n| EXTENSION / VERSION | PUSH | POP |\n|-----------------------------------------------------------------------------------------------|-------------------------|------------------------|\n| [KHR_debug](https://www.khronos.org/registry/gles/extensions/KHR/KHR_debug.txt) | `glPushDebugGroupKHR()` | `glPopDebugGroupKHR()` |\n| [EXT_debug_marker](https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt) | `String` | `String` |\n| [OpenGL ES 3.2](https://www.khronos.org/opengles/sdk/docs/man32/html/glPopDebugGroup.xhtml) | `String` | `String` |\n\nVulkan has the following APIs to group commands:\n\n| EXTENSION / VERSION | PUSH | POP |\n|-------------------------------------------------------------------------------------------------------------------------------|-------------------------|------------------------|\n| [VK_EXT_debug_marker](https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0/doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt) | `glPushDebugGroupKHR()` | `glPopDebugGroupKHR()` |"]]