是否可以在 Android OpenGL ES 2 中调试着色器?
Is it possible to debug shaders in Android OpenGL ES 2?
是否可以在使用 OpenGL-ES 2 的 Android 应用程序中调试着色器(片段和顶点)?
由于我们只传递一个带有代码的字符串和一堆要用句柄替换的变量,因此找到需要进行的适当更改非常繁琐。
是否可以写入 Android 日志,如 Log.d()
是否可以使用断点并检查着色器计算中的当前值?
我根本不习惯用笔写代码,这就是在着色器文本代码中编写代码的感觉。
没有。请记住,GPU 将对每个程序执行数百万次(每个顶点一次,每个片段一次),通常有数百个线程 运行 并发,因此任何 "connect a debugger" 的概念几乎都是不可能的。
这是一个老问题,但由于它首先出现在搜索中,并且可以扩展旧答案,所以我将留下一个替代答案:
虽然无法像我们在 Java 或 Kotlin 上那样进行打印或调试,但这并不意味着它无法调试。 used to be a tool on the now deprecated Android Monitor 让您逐帧查看 GPU 执行的轨迹,其中包括检查调用和几何。
现在官方的 GPU 调试器是 Android GPU Inspector,它有一些有用的性能指标,并将在未来的更新中包括逐帧调试。
如果 Android GPU Inspector 没有您需要的东西,您可以根据您的设备使用供应商特定的调试器(Mali Graphics Debugger、Snapdragon Debugger 等)
是否可以在使用 OpenGL-ES 2 的 Android 应用程序中调试着色器(片段和顶点)?
由于我们只传递一个带有代码的字符串和一堆要用句柄替换的变量,因此找到需要进行的适当更改非常繁琐。
是否可以写入 Android 日志,如 Log.d()
是否可以使用断点并检查着色器计算中的当前值?
我根本不习惯用笔写代码,这就是在着色器文本代码中编写代码的感觉。
没有。请记住,GPU 将对每个程序执行数百万次(每个顶点一次,每个片段一次),通常有数百个线程 运行 并发,因此任何 "connect a debugger" 的概念几乎都是不可能的。
这是一个老问题,但由于它首先出现在搜索中,并且可以扩展旧答案,所以我将留下一个替代答案:
虽然无法像我们在 Java 或 Kotlin 上那样进行打印或调试,但这并不意味着它无法调试。 used to be a tool on the now deprecated Android Monitor 让您逐帧查看 GPU 执行的轨迹,其中包括检查调用和几何。
现在官方的 GPU 调试器是 Android GPU Inspector,它有一些有用的性能指标,并将在未来的更新中包括逐帧调试。
如果 Android GPU Inspector 没有您需要的东西,您可以根据您的设备使用供应商特定的调试器(Mali Graphics Debugger、Snapdragon Debugger 等)