介绍

RenderDoc 是一个免费的独立图形调试器。可以快速轻松地单帧抓取分析 Vulkan、D3D11、D3D12、OpenGL、OpenGL ES 应用程序。

这是一个非常重要的工具,重要性可以与 WireShark 相比,WireShark 可以实时地查看收发的网络消息,而 RenderDoc 可以实时地查看显卡是如何进行渲染的。

当然存在很多平台相关的工具,如显卡场景 Intel、AMD、Nvidia 的工具,但是 RenderDoc 是开源跨平台的,用起来要更方便。而且 Unity、Unreal 都已内置对 RenderDoc 的支持。

历史

搜索 RenderDoc 时会发现存在两个官网:RenderDoc 域名与 CryEngine 域名,这是因为最开始作者是在 CryEngine 用业余时间编写的软件。

目标

在 macOS 上调试 Android 游戏。

注意:RenderDoc 没有 Android 版本,程序在连接到 Android 后会自动安装辅助程序。

环境

  • macOS 10.14.6
  • 华为 P30

下载

官网只有 Windows 与 Linux 的稳定版本,macOS 还只是测试版本,但是实际使用时已经非常稳定了。

在下面链接中的 Nightly builds 中找到最新版本下载

注意:RenderDoc macOS 版本运行后标题是 qrenderdoc

文档

建议在使用前阅读相关的文档,如 Quick StartHow do I use RenderDoc on Android?

使用

要调试的程序必须是 debuggable,RenderDoc 可以帮忙自动反编译修改此属性,但是可能会失败,建议打包时修改此属性方便测试。

手机开启开发者模式,连接电脑后允许电脑调试。

点击 RenderDoc 左下角的 Replay Context: Local,在弹出的菜单中点击手机,等待自动安装完成。

点击 Launch Application 标签页,点击 Executable Path 输入框右侧的 … 浏览按钮,找到应用的包名与启动类名启动。

这时手机会自动运行游戏,手机屏幕最上方会显示 RenderDoc 的调试信息,如现在是多少帧。

这时可以找到要抓帧的地方,点击 Capture Immediately 按钮,等待抓帧完成后,双击抓到的帧,会打开分析窗口。

这时不要拨掉手机与电脑的连线,点击不同的渲染事件可以在不同的窗口中显示当前的状态,如 Texture Viewer 中会显示当前 DrawCall 使用的输入纹理与输出纹理,因此可以快速判断渲染是否正确。

Pipeline State 可以查看不同阶段的 Shader 是什么,甚至可以实时修改 Shader 保存并预览效果,通过 Texture Viewer 可以看修改后的效果。

注意:由于现阶段并不是很稳定,有时候 RenderDoc 会提示无法 replay(这里的 replay 是抓帧时查看不同 DrawCall 的状态),这时需要重新运行游戏。

参考资料