如何在OpenGL中创建调试标记?

bis*_*opp 5 c++ opengl debugging graphics renderdoc

我正在尝试使用RenderDoc调试一些OpenGL 3.3+图形代码,并且我想为RenderDoc可以识别的渲染过程定义一些调试标记。

我使用GLEW,并尝试使用glPushGroupMarkerEXT / glPopGroupMarkerEXT来定义这些标记,但是当我调用glPushGroupMarkerEXT时遇到访问冲突,因此我猜没有提供该功能的扩展名。我还尝试使用glewIsSupported检查扩展名GL_EXT_debug_marker是否可用,但返回false。

是否不支持此功能,或者我使用不正确?还是有其他方法可以实现这一目标?

Nic*_*las 5

EXT_debug_marker不是您要使用的扩展名。它很老,从来没有得到真正的广泛支持。它的功能已被KHR_debug吸收,它得到了更广泛的支持,并且自4.3(又名:5年前)以来一直是OpenGL的核心。

现在,两者之间的调试标记功能有所不同。KHR_debug使标记成为另一种用户定义的调试通知。因此,在您本应调用的位置glInsertEventMarkerEXT,您改为使用消息的type来调用更通用的类型glDebugMessageInsertGL_DEBUG_TYPE_MARKER。在使用的地方glPush/PopGroupMarkerEXT,您改为使用glPush/PopDebugGroup,它用于任意作用域。这样的分组不使用标记类型。它们使用GL_DEBUG_TYPE_PUSH/POP_GROUP类型,以便您可以区分分组和标记之间的区别。