“命令”窗格显示应用程序发出的调用,按帧和绘图调用或按用户标记进行分组。




操作
您可以在此窗格中执行以下操作
操作 | 说明 |
---|---|
显示结果 | 点击命令或组以更新其他窗格,使其反映所选命令或组之后的状态。 |
展开或收起命令层次结构 | 点击分组左侧的灰色三角形或双击分组以展开或收起它。 |
搜索 | 在窗格顶部的搜索栏中输入字符串,然后按 Return(请参见上图)。要查找下一个匹配项,请确保选中搜索栏并再次按 Return。 选中 Regex 框以使用正则表达式搜索模式。例如, glClear.* 匹配命令 glClear() 和 glClearColor() 。您还可以搜索命令参数值,例如缓冲区:2 ,其在 glBindBuffer() 中使用。 |
编辑 | 右键点击命令并选择编辑。在编辑对话框中,更改一个或多个值,然后点击确定。注意:这仅对 Vulkan 命令有效,对 OpenGL 命令无效。 |
查看状态或内存信息 | 点击引用状态参数(例如纹理 ID)的命令参数。状态窗格会显示附加信息。点击内存地址或指针以打开内存窗格。注意:这仅对 Vulkan 命令有效,对 OpenGL 命令无效。 |
复制命令 | 选择窗格中的项目,然后按 Control+C(或 Command+C)以复制带有参数值的命令。您可以将此信息粘贴到文本文件中。 |
放大缩略图 | 缩略图显示在调用的左侧,如下图所示。将光标悬停在缩略图上以将其放大。 |

OpenGL ES 命令层次结构
OpenGL ES 命令被转换为 Vulkan,并对 Vulkan 命令进行分析。因此,OpenGL ES 命令显示为在展开的层次结构中同时包含 OpenGL ES 和 Vulkan 命令。在前面的示例中,您可以看到 RenderPass
下有多个 glDrawElement
命令。第二个 glDrawElements
命令层次结构已展开,并显示OpenGL ES Commands和DrawIndexed。您可以展开这两个层次结构以显示相关的 OpenGL ES 命令,以及它们所转换成的 Vulkan 命令。
由于 OpenGL ES 和 Vulkan 之间不存在一对一关系,因此可能存在一些差异。例如,在第一个 glDraw*
命令之前发生的 glClear
命令显示在 RenderPass
之前。如果您展开 glClear
的层次结构,将没有 Vulkan 命令。这是因为清除将被推迟并作为启动 Vulkan RenderPass
的一部分完成。
调试标记
根据您的应用,命令窗格可能包含一个帧内非常长的命令列表。为了更好地导航和可读性,您可以定义调试标记,将调用分组到树中的标题下。这可以包括一个分组,例如,命名为“Setup”或“Render World”。
如果启用了调试标记,请点击命令窗格以显示指向此信息的链接。OpenGL ES 具有以下 API 来分组命令
扩展名/版本 | PUSH | POP |
---|---|---|
KHR_debug | glPushDebugGroupKHR() |
glPopDebugGroupKHR() |
EXT_debug_marker | 字符串 |
字符串 |
OpenGL ES 3.2 | 字符串 |
字符串 |
Vulkan 具有以下 API 来分组命令
扩展名/版本 | PUSH | POP |
---|---|---|
VK_EXT_debug_marker | glPushDebugGroupKHR() |
glPopDebugGroupKHR() |