我正在尝试使用 RenderDoc 调试一些 OpenGL 3.3+ 图形代码,我想为渲染过程定义一些可以被 RenderDoc 识别的调试标记。
我使用 GLEW 并尝试使用 glPushGroupMarkerEXT/glPopGroupMarkerEXT 来定义这些标记,但是当我调用 glPushGroupMarkerEXT 时遇到访问冲突,所以我猜提供该功能的扩展未加载。 我还尝试使用 glewIsSupported 检查扩展 GL_EXT_debug_marker 是否可用,但返回 false。
此功能不受支持还是我没有正确使用它?或者还有其他方法可以实现吗?
最佳答案
EXT_debug_marker不是您要使用的扩展名。它很旧,是never really widely supported .它的功能被吸收到 KHR_debug ,即 more widely supported自 4.3 以来(又名:5 年多以前),它本身就是 OpenGL 的核心。
现在,两者之间的调试标记功能不同。 KHR_debug 使标记成为另一种用户定义的调试通知。因此,在您调用 glInsertEventMarkerEXT
的地方,您改为调用 more generic glDebugMessageInsert
, using the GL_DEBUG_TYPE_MARKER
as the message's type。 .在你使用 glPush/PopGroupMarkerEXT
的地方,你 instead use glPush/PopDebugGroup
, 用于任意范围。这样的分组不使用标记类型;它们使用 GL_DEBUG_TYPE_PUSH/POP_GROUP
类型,因此您可以区分分组和标记。
关于c++ - 如何在 OpenGL 中创建调试标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54278607/