我可以在OpenGL中禁用自动错误处理吗?

4
在OpenGL中,默认设置是在错误发生时自动报告错误。可以使用glGetError查询错误,也可以通过使用glDebugMessageCallback设置错误回调来查询错误。
当实际上没有抛出错误时,这种方法是否会使用不必要的资源?
为了节省资源,我想知道如何禁用此机制。我打算在我的应用程序的“发布”版本中禁用它,因为不希望抛出任何错误。

你有查看过OpenGL维基页面上关于错误处理的内容吗?特别是无错误上下文部分?对于发布版本,你也可以简单地不设置错误回调并且不调用glGetError。这样就不会报告任何错误了。 - BDL
@BDL 不用了,谢谢你给我展示了这个。这正是我在寻找的。然而,这仍然没有解答我的关于错误处理性能开销的问题。 - user11313931
1
既然您可以禁用错误检查,那么可以安全地假设错误检查会引入非零开销。开销的大小取决于您的GPU、驱动程序、OpenGL实现和许多其他因素。 - BDL
@YanB_。我支持@BDL的立场。如果你对资源限制如此苛刻,那么_error handling_可能只是你代码中的小问题。 - πάντα ῥεῖ
1个回答

7
可以安全地假设,OpenGL 的内部 API 错误检查会在运行时引入非零开销。实际的开销取决于所使用的 OpenGL 实现。

自 OpenGL 4.6 以来,OpenGL 允许通过在上下文创建期间设置 GL_CONTEXT_FLAG_NO_ERROR_BIT 标志来创建不带错误检查的上下文。

更多细节可在以下链接中找到:


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