OpenGL——调试软件RenderDoc的使用

调试工具对OpenGL函数使用进行性能测试,寻找瓶颈,检查缓冲内存,显示纹理和帧缓冲区附件,这对开发过程中是非常有用的。

RenderDoc

Renderdoc™是一款独立程序,它可以在任何使用Direct3D 11.0 或11.1的Windows应用中捕捉和回放帧,提供工具进行深入分析、图形探察以及API使用的详细检查,这些功能让开发人员在他们的程序中 定位错误和问题。

Renderdoc™由Crytek完全从头开发,就是为了满足图形程序员的真实需求,并在其CRYENGINE引擎的各款游戏制作过程中广泛使用和改进优化。计划逐步地增加Renderdoc™功能,并且支持其他平台及API (比如OpenGL)。

OpenGL——调试软件RenderDoc的使用_第1张图片

窗口介绍

  • Timeline(时间线):能够直观地显示不同阶段(不透明,透明,天空盒,early-z,阴影通道等)所花费的时间。它同时会显示渲染目标的读/写,所以你可以快速查看生成帧的方式是否会产生成本昂贵的解析成本。
  • Event Browser(实践浏览器):列出帧的所有API调用,并且用调试标记标签分开逻辑绘制组。在这里选择绘制会根据情景填充/更新所有其他选项卡(纹理查看器和网格查看器等).RenderDoc tabbed functionality
  • Texture Viewer(纹理查看器):显示所选绘制的输入纹理和输出纹理(RT)。单击单个纹理可以查看其格式/分辨率/可用的MIPS/MSAA级别等。
  • Pipeline State(管道状态):选择任何管道状态以查看绑定资源的所有属性和材质属性(透明度/混合状态和纹理/采样器等)。
  • Mesh Viewer(网格查看器):在本地空间查看输入网格,从而确定正在进行绘制的是哪个绘制。你同时可以看到顶点数目(对于验证LOD系统非常有用),屏幕空间中的后投影视图和顶点属性等。
  • Launch Application(启动应用):选择要运行并附加到RenderDoc host的应用程序。如果你选择的情景是“Local”,则可以在计算机执行应用程序。如果选择的情景是“Remote:Oculus Quest”,你将获得设备可用包的列表。
  • Resource Inspector(资源检查器):显示渲染目标,临时缓冲区,纹理,着色器和网格等所有GPU相关资源的列表。
  • Statistics(统计数据):显示你的绘制次数和GPU内存使用情况等。

 

RenderDoc 对Android 设备联调

前期准备工作:下载RenderDoc到电脑上,手机端打开开发模式,开启USB调试,连接电脑的usb选项选择“文件传输”。

1. 设备连接

在电脑端点击RenderDoc窗口的最左下角,选择当前的手机型号;RenderDoc的窗口左下角会显示 Remote server ready,并且在手机屏幕上出现RenderDoc的logo界面,表示连接成功,可以联调。

OpenGL——调试软件RenderDoc的使用_第2张图片        OpenGL——调试软件RenderDoc的使用_第3张图片

2. 运行

在Launch Application窗口标签中按一下步揍,根据包名选择需要调试的app,并点击Launch 启动(调试的包需要debug)。

OpenGL——调试软件RenderDoc的使用_第4张图片    OpenGL——调试软件RenderDoc的使用_第5张图片

3. 捕获

成功运行之后,RenderDoc窗口中不多了个设备的标签,名称为:手机型号+ AppName,通过红框中的“Capture Frame(s) Immediately”按钮,立即截取帧,当然也可以延迟截取或者截取多帧,这里只截取一帧。

双击红色方框中的黑色部分(此处显示手机画面),RenderDoc窗口的左边列表就会有渲染信息,并在窗口上部分显示Timeline

     OpenGL——调试软件RenderDoc的使用_第6张图片

4. 分析

       OpenGL——调试软件RenderDoc的使用_第7张图片

  • 在“Statistics”选项卡以查看当前的渲染绘制调用信息;在这里可以看出Draw Call、API Call 的调用次数,texture使用数量以及内存占用,GPU的内存占用等很直观的数据信息
  • 可视化绘制/时间:接下来,打开“Texture Viewer”选项卡,打开“Overlay”菜单中的“Highlight Draw Call”选项,单击“Gather Timings (clock)”按钮,最后在“Output”纹理部分中选择“Render Target”。这样做会为我提供每个绘制调用的相对定时,并帮助我找出花费时间最长的绘制调用。我可以在“Event Browser”中单击任何调用,并在“Render Target”查看器中突出显示。
  • 根据DrawCall等统计数据,以及具有最高定时的绘制,并尝试确定原因。着色器过于复杂吗?输入资源属性设置不正确吗?我的渲染顺序异常吗?
  • 更多分析请参考官方文档 https://renderdoc.org/docs/index.html

 

你可能感兴趣的:(OpenGL,OpenGL,ES,opengl,opengles)