gpt4 book ai didi

android - 有没有比在每个命令后调用 glGetError 更好的调试 OpenGL 的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:09 24 4
gpt4 key购买 nike

我正在 Android 上试验一些 OpenGL,之前没有任何 3D 编程经验。所以很明显我在我的程序中犯了很多错误。

当我遇到问题并发现 glGetError 产生错误代码时,我只是在每次调用绘图代码中的 OpenGL 命令后添加对 glGetError 的调用。虽然这行得通并且我以这种方式发现了我的错误,但我认为我的绘图代码现在是两倍大并且更难阅读。

有没有办法摆脱所有这些对 glGetError 的显式调用并自动调用它?如果发生 OpenGL 错误,我的应用程序最好中止并显示错误指示哪个命令负责。

最佳答案

从 4.2 版开始,Android 在手机的开发人员选项中提供了一个名为“启用 OpenGL 跟踪”的选项。如果将其设置为“glGetError 上的调用堆栈”,您将获得如下输出

07-15 15:44:43.045: D/libEGL(14251): [glEnableClientState] 0x500
07-15 15:44:43.068: D/CallStack(14251): glGetError:glEnableClientState#00 pc 00019388 /system/lib/libEGL.so
07-15 15:44:43.076: D/CallStack(14251): glGetError:glEnableClientState#01 pc 0001e290 /system/lib/libdvm.so (dvmPlatformInvoke+112)
07-15 15:44:43.076: D/CallStack(14251): glGetError:glEnableClientState#02 pc 0004d410 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+395)
07-15 15:44:43.076: D/CallStack(14251): glGetError:glEnableClientState#03 pc 000276e4 /system/lib/libdvm.so

在日志中。在这种情况下,我将错误的枚举/整数传递给 glEnableClientState() 以触发错误。请注意,通过启用此选项,错误将被“消耗”,并且进一步的 glGetError() 检查将不再报告此错误。相反,您现在可以节省在代码中调用 glGetError() 的时间,只需对“glGetError:”的日志输出进行 grep。

关于android - 有没有比在每个命令后调用 glGetError 更好的调试 OpenGL 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16594425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com