“Commands”窗格显示应用发出的调用,按框架和绘制调用或用户标记分组。
![OpenGL 或 Vulkan 轨迹的初始视图](https://developer.android.google.cn/static/images/agi/command-pane-images/command-pane-1.png?authuser=5&hl=ro)
![查看 OpenGL 跟踪记录](https://developer.android.google.cn/static/images/agi/command-pane-images/command-pane-2.png?authuser=5&hl=ro)
![查看 Vulkan 跟踪记录](https://developer.android.google.cn/static/images/agi/command-pane-images/command-pane-3.png?authuser=5&hl=ro)
![查看 Vulkan 跟踪记录](https://developer.android.google.cn/static/images/agi/command-pane-images/command-pane-4.png?authuser=5&hl=ro)
运营
您可以在此窗格中执行以下操作:
操作 | 说明 |
---|---|
显示结果 | 点击某个命令或组可更新其他窗格,以反映所选命令或组之后的状态。 |
展开或收起命令层次结构 | 点击分组左侧的灰色三角形,或双击分组以将其展开或收起。 |
搜索 | 在窗格顶部的搜索栏中输入字符串,然后按 Return 键(请参阅上图)。如需查找下一处,请务必选中该条形,然后再次按 Return 键。 选中 Regex 复选框以使用正则表达式搜索模式。 例如, glClear.* 同时匹配 glClear() 和 glClearColor() 命令。您还可以搜索命令参数值,例如在 glBindBuffer(). 中使用的缓冲区:2 |
修改 | 右键点击某个命令,然后选择修改。在修改对话框中,更改一个或多个值,然后点击确定。 注意:这仅适用于 Vulkan 命令,而不适用于 OpenGL 命令。 |
查看状态或内存信息 | 点击引用了状态参数(如纹理 ID)的命令参数。State 窗格会显示更多信息。 点击内存地址或指针以打开 Memory 窗格。 注意:这仅适用于 Vulkan 命令,而不适用于 OpenGL 命令。 |
复制命令 | 在窗格中选择各项,然后按 Ctrl+C(或 Command+C)以复制命令及其参数值。您可以将这些信息粘贴到文本文件中。 |
放大缩略图 | 缩略图会显示在通话左侧,如下图所示。将光标悬停在缩略图上即可放大。 |
![图片说明](https://developer.android.google.cn/static/images/agi/command-pane-images/command-pane-5.png?authuser=5&hl=ro)
OpenGL ES 命令层次结构
OpenGL ES 命令会转换为 Vulkan,并分析 Vulkan 命令。因此,OpenGL ES 命令会与 OpenGL ES 和 Vulkan 命令一起显示在展开的层次结构中。在前面的示例中,您可以在 RenderPass
下看到多个 glDrawElement
命令。第二个 glDrawElements
命令层次结构已展开,显示了 OpenGL ES 命令和 DrawIndexed。您可以展开这两个层次结构,以显示相关的 OpenGL ES 命令以及已转换为的 Vulkan 命令。
由于 OpenGL ES 和 Vulkan 之间没有一对一关系,因此可能会存在一些差异。例如,出现在第一个 glDraw*
命令之前的 glClear
命令出现在 RenderPass
之前。如果您展开 glClear
的层次结构,则不会有 Vulkan 命令。这是因为,清除操作将被延迟,并在启动 Vulkan RenderPass
的过程中完成。
调试标记
Commands 窗格可能会在一帧内包含很长的命令列表,具体取决于您的应用。为了更好地进行导航和提高可读性,您可以定义调试标记,将调用分组到树中的某个标题下。这可能包括一个名为“Setup”或“Render World”的分组。
如果启用了调试标记,点击 Commands 窗格会显示指向此信息的链接。OpenGL ES 使用以下 API 对命令进行分组:
扩展程序 / 版本 | 推送 | POP : POP 协议 : POP(邮局协议) |
---|---|---|
KHR_debug | glPushDebugGroupKHR() |
glPopDebugGroupKHR() |
EXT_debug_marker | String |
String |
OpenGL ES 3.2 | String |
String |
Vulkan 使用以下 API 对命令进行分组:
扩展程序 / 版本 | 推送 | POP : POP 协议 : POP(邮局协议) |
---|---|---|
VK_EXT_debug_marker | glPushDebugGroupKHR() |
glPopDebugGroupKHR() |