“Commands”窗格

“Commands”窗格显示应用发出的调用,按框架和绘制调用或用户标记分组。

OpenGL 或 Vulkan 轨迹的初始视图
图 1. OpenGL 或 Vulkan 轨迹的初始视图
查看 OpenGL 跟踪记录
图 2. 查看 OpenGL 跟踪记录
查看 Vulkan 跟踪记录
图 3. 查看 Vulkan 跟踪记录
查看 Vulkan 跟踪记录
图 4. 在 Vulkan 跟踪记录中搜索命令

运营

您可以在此窗格中执行以下操作:

操作 说明
显示结果 点击某个命令或组可更新其他窗格,以反映所选命令或组之后的状态。
展开或收起命令层次结构 点击分组左侧的灰色三角形,或双击分组以将其展开或收起。
搜索 在窗格顶部的搜索栏中输入字符串,然后按 Return 键(请参阅上图)。如需查找下一处,请务必选中该条形,然后再次按 Return 键。

选中 Regex 复选框以使用正则表达式搜索模式。 例如,glClear.* 同时匹配 glClear()glClearColor() 命令。您还可以搜索命令参数值,例如在 glBindBuffer(). 中使用的缓冲区:2
修改 右键点击某个命令,然后选择修改。在修改对话框中,更改一个或多个值,然后点击确定。 注意:这仅适用于 Vulkan 命令,而不适用于 OpenGL 命令。
查看状态或内存信息 点击引用了状态参数(如纹理 ID)的命令参数。State 窗格会显示更多信息。 点击内存地址或指针以打开 Memory 窗格。 注意:这仅适用于 Vulkan 命令,而不适用于 OpenGL 命令。
复制命令 在窗格中选择各项,然后按 Ctrl+C(或 Command+C)以复制命令及其参数值。您可以将这些信息粘贴到文本文件中。
放大缩略图 缩略图会显示在通话左侧,如下图所示。将光标悬停在缩略图上即可放大。
图片说明

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()