OpenGL ES 2.0调试

19

我有一个基于OpenGL ES 2.0的应用程序。它可以在iPhone/iPad模拟器、真机和使用Imgtec的模拟器库(即PVRVframe)的Windows上编译并运行。

在该应用程序中,我有一个特定的绘制调用,导致目标上没有像素被写入,尽管我可以查询的所有状态看起来都很合理(视口、深度测试/模板测试/剔除/混合关闭、帧缓冲区完整等),而且据我所知,我正在提交合理的顶点数据。

目前我需要的是一种类似于Pix/GPAD的工具,让我能够步进场景并查看我无法直接从OpenGL查询的状态,以便于调试问题的draw call(例如实际的顶点/索引缓冲区内容)。

PVRTraceOSX instruments都没有捕获足够的状态来调试这种问题。特别是,它们不会捕获顶点/索引缓冲区或纹理数据(OSX instruments也不会捕获着色器源代码)。

以前在Stack Overflow上解决这类问题的答案是gDEBugger,但现在已经更新到版本5.8,并且是免费的,这很好,但不再支持OpenGL ES 2(在Windows下,通过EGL没有ES2可渲染配置;在OSX下,无法将调试器附加到运行在模拟器或真实设备上的应用程序中),这就不太好了。

我是否忽略了一些明显的东西?我的选择有哪些?其他人如何调试他们的场景?


1
记录一下,我现在已经解决了我遇到的问题;它确实是由于状态没有被任何上述工具捕获或通过OpenGL查询。追踪这个问题花了一个早上;如果我有一个完整的状态转储,这个问题会一眼就看出来。所以我还是想要一个答案,为下一次做准备 :) - moonshadow
已经过去了一周,下一个时间点现在已经到来。肯定有一些明智的工具存在于某个地方,对吧?对吧? - moonshadow
3个回答

8

有几个GPU供应商提供了几个OpenGL ES 1.1/2.0调试工具。几乎所有这些工具都需要真实设备,但是Imagination Technologies提供了一个仿真库和跟踪工具,您可以使用它们。您是否使用了PVRTrace和PVRVFrame?

  • PowerVR(想象科技)
    • PVRVFrame是一个OpenGL ES 1.1/2.0的仿真库,可以在OpenGL上使用。并且,GL调用可以通过PVRTrace进行跟踪,并带有GUI。
    • PVRTrace也可以连接Linux ARMv7设备。
  • Adreno(高通)
  • Tegra(英伟达)
    • PerfHUD ES具有与Adreno分析器相同的帧调试器。需要Tegra开发套件。
  • Mali(ARM)
我相信gDEBugger 5.7是调试OpenGL ES 1.1/2.0的最佳工具。但它已经不再可用...

1
我已经查看了PVRTrace,正如我在问题中所解释的那样。它无法捕获纹理或顶点/索引缓冲区内容(或者可能无法显示它),并且(不太重要的是)不提供一种通过帧并显示特定绘制调用结果的方式,就像成熟的调试器Pix和GPAD一样。此外,我观察到其状态查看器中显示的状态与glGet()对于特定调用报告给代码的状态不符,并且屏幕上的结果表明是PVRTrace出了问题。这使得它的使用受到限制。我没有访问Adreno或Mali设备。 - moonshadow
Adreno分析器非常适合进行性能分析,但与PVRTrace一样,它无法捕获足够的状态以进行调试。 - moonshadow

4

1
Xcode的捕获帧功能现在已经足够成熟,可以用于调试几乎所有问题。我们发现对于复杂的帧,在iPad1时代的设备上无法使用它,因为设备会耗尽内存,但这绝不是无法克服的问题。请注意,即使您有一些外部进程实际创建构建(我们使用Jam),也必须确保Xcode工作区包括OpenGL ES框架,否则帧捕获功能将被禁用,而没有任何解释 - 希望这能为其他人节省一些时间 :) - moonshadow

3

我发现 Windows 版本的 gDebugger 5.7 仍然可以在这里下载:

http://files.gremedy.com/downloads/gDEBugger-5_7.msi

我修改了此链接,它来自于以下下载页面的顶部: view-source:http://www.gremedy.com/downloading.php?platform=windows32

可能可以通过同样的方法访问其他平台的相同版本。

一个旧的许可文件可以在这里找到: http://www.geeks3d.com/20101207/3d-programming-gdebugger-advanced-opengl-debugger-now-free/

但是它已经在2011年1月31日过期了。


2
gDEBugger的最新版本5.8.1不再需要许可证:http://www.gremedy.com/download.php - Nathan Monteleone
gDebugger 5.8.1的Windows工作链接:http://yun.baidu.com/s/1jGMeSCm - Joseph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接