帧调试器
帧调试器回答“这一帧为什么有这么多 draw call”。它捕获一帧,按顺序列出每个 draw call, 并给出每个 draw 为什么开了新批——着色器、混合模式、材质、纹理、裁剪矩形不同等等。 它是 SDK 在性能剖析与诊断里那套帧捕获的编辑器视图。
用 窗口 → 帧调试器 打开,或在命令面板里搜帧调试器。它停靠在性能分析器旁边。
- 选捕获对象:视口(编辑器自己的画面)、运行中的游戏(Play 时)、设备(已连接的设备预览)。
- 点捕获一帧。面板把这一帧列成一个或多个 pass——每台相机一个相机 pass, 再加一个画在最上面的屏幕叠加层 pass——并显示各自的 draw 数。
捕获是快照。之后场景变了,面板会提示;重新捕获即可看新的一帧。
读 draw 列表
Section titled “读 draw 列表”每一行是一个 draw call:
| 列 | 含义 |
|---|---|
| 类型 | 画的是什么——精灵、文字、网格、瓦片块、特效…… |
| 断批原因 | 这个 draw 为什么没能并进上一个。 |
| 内容 | 画了什么:材质、着色器、纹理。 |
| 三角形 | 三角形数。 |
列表上方的断批原因标签可以只看某一种原因。常见的有:
- 所在 pass 的第一个 draw——没东西可合;每个 pass 都有一个。
- 着色器 / 材质 / 混合模式——相邻 draw 用了不同的。把同类 draw 排在一起,或共用材质,可以消除。
- 纹理槽位——上一个 draw 已用满纹理槽。把精灵打进更少的图集有帮助。
- 裁剪 / 模板——两个 draw 之间 UI 遮罩或裁剪区域变了。
- 深度 / 剔除 / 渲染状态——深度测试、背面剔除或自定义状态不同。
- 顶点布局 / 索引不连续——几何体种类不同,放不进同一段缓冲。
查看单个 draw
Section titled “查看单个 draw”点一行,或用上一个 draw / 下一个 draw 逐个走,可以看到它的详情:材质、着色器、纹理、 三角形、实例数、层、裁剪矩形和模板,以及它画的实体(在大纲中选中可以跳到该实体)。 没有实体的 draw——文字、辅助图形、特效——会明说。
视口还能把画面重放到所选 draw,让你看到画到那一步时的样子。draw 无法重放时,面板会告诉你, 而不是给出一张错误的图。