如何在 OpenGL 中创建调试标记?
How to create debugging markers in OpenGL?
我正在尝试使用 RenderDoc 调试一些 OpenGL 3.3+ 图形代码,我想为渲染过程定义一些可以被 RenderDoc 识别的调试标记。
我使用 GLEW 并尝试使用 glPushGroupMarkerEXT/glPopGroupMarkerEXT 来定义这些标记,但是当我调用 glPushGroupMarkerEXT 时遇到访问冲突,所以我猜提供该功能的扩展没有加载。
我还尝试使用 glewIsSupported 检查扩展名 GL_EXT_debug_marker 是否可用,但 returns 为假。
这个功能是不受支持还是我没有正确使用它?或者还有其他方法可以实现吗?
EXT_debug_marker is not the extension you want to use. It is old and was never really widely supported. Its functionality was absorbed into KHR_debug, which is more widely supported 自 4.3 以来(又名:5 多年前)它本身就是核心 OpenGL。
现在,调试标记功能在两者之间不同。 KHR_debug 将标记变成另一种用户定义的调试通知。因此,在您应该调用 glInsertEventMarkerEXT
的地方,您改为调用 more generic glDebugMessageInsert
, using the GL_DEBUG_TYPE_MARKER
as the message's type. Where you would use glPush/PopGroupMarkerEXT
, you instead use glPush/PopDebugGroup
,它用于任意范围界定。这样的分组不使用标记类型;他们使用 GL_DEBUG_TYPE_PUSH/POP_GROUP
类型,因此您可以区分分组和标记。
我正在尝试使用 RenderDoc 调试一些 OpenGL 3.3+ 图形代码,我想为渲染过程定义一些可以被 RenderDoc 识别的调试标记。
我使用 GLEW 并尝试使用 glPushGroupMarkerEXT/glPopGroupMarkerEXT 来定义这些标记,但是当我调用 glPushGroupMarkerEXT 时遇到访问冲突,所以我猜提供该功能的扩展没有加载。 我还尝试使用 glewIsSupported 检查扩展名 GL_EXT_debug_marker 是否可用,但 returns 为假。
这个功能是不受支持还是我没有正确使用它?或者还有其他方法可以实现吗?
EXT_debug_marker is not the extension you want to use. It is old and was never really widely supported. Its functionality was absorbed into KHR_debug, which is more widely supported 自 4.3 以来(又名:5 多年前)它本身就是核心 OpenGL。
现在,调试标记功能在两者之间不同。 KHR_debug 将标记变成另一种用户定义的调试通知。因此,在您应该调用 glInsertEventMarkerEXT
的地方,您改为调用 more generic glDebugMessageInsert
, using the GL_DEBUG_TYPE_MARKER
as the message's type. Where you would use glPush/PopGroupMarkerEXT
, you instead use glPush/PopDebugGroup
,它用于任意范围界定。这样的分组不使用标记类型;他们使用 GL_DEBUG_TYPE_PUSH/POP_GROUP
类型,因此您可以区分分组和标记。