是否可以在Android OpenGL ES 2中调试着色器?

时间:2016-12-15 10:02:55

标签: android opengl-es shader fragment-shader vertex-shader

是否有可能在使用OpenGL-ES 2的Android应用程序中调试着色器(片段和顶点)?

由于我们只传递带有代码和一堆变量的String来替换句柄,因此找到需要进行的正确更改非常繁琐。

  • 是否可以写入Android日志,如Log.d()

  • 是否可以使用断点并检查着色器计算中的当前值?

我根本不习惯用笔编写代码,这就是在着色器文本代码中编码的感觉。

2 个答案:

答案 0 :(得分:2)

没有。请记住,GPU将执行每个程序数百万次(每个顶点一次,每个片段一次),通常有数百个线程同时运行,因此任何“连接调试器”的概念都是不可能的。

答案 1 :(得分:2)

这是一个老问题,但由于它首先出现在搜索中并且可以扩展旧答案,我将留下一个替代答案:

虽然像我们在 Java 或 Kotlin 上所做的那样打印或调试是不可能的,但这并不意味着它不能被调试。 used to be a tool on the now deprecated Android Monitor 可让您逐帧查看 GPU 执行的跟踪,其中包括检查调用和几何。

目前官方的 GPU 调试器是 Android GPU Inspector,它具有一些有用的性能指标,并将在未来的更新中逐帧调试。

Screen recording of the frame debug tool

如果 Android GPU Inspector 没有您需要的东西,您可以根据您的设备使用供应商特定的调试器(Mali Graphics Debugger、Snapdragon Debugger 等)