如何在 OpenGL 中创建调试标记

How to create debugging markers in OpenGL?

本文关键字:调试 创建 OpenGL      更新时间:2023-10-16

我正在尝试使用 RenderDoc 调试一些 OpenGL 3.3+ 图形代码,我想为 RenderDoc 识别的渲染通道定义一些调试标记。

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

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

EXT_debug_marker不是

您要使用的扩展名。它很古老,从未得到过广泛的支持。它的功能被吸收到KHR_debug中,得到了更广泛的支持,并且自 4.3 年以来(又名:5+ 年前)以来一直是 OpenGL 的核心。

现在,调试标记功能在两者之间是不同的。KHR_debug使标记成为另一种用户定义的调试通知。因此,在调用glInsertEventMarkerEXT的地方,您可以调用更通用的glDebugMessageInsert,使用GL_DEBUG_TYPE_MARKER作为消息的类型。在你使用 glPush/PopGroupMarkerEXT 的地方,你改用 glPush/PopDebugGroup ,它用于任意范围。此类分组不使用标记类型;它们使用GL_DEBUG_TYPE_PUSH/POP_GROUP类型,以便您可以区分分组和标记。