如何解释GL_DEBUG_OUTPUT消息?

问题描述 投票:0回答:1

我已经安装了 OpenGL 调试回调并启用了

GL_DEBUG_OUTPUT
。回调如下所示:

void glMsgCallback( GLenum source,
                 GLenum type,
                 GLuint id,
                 GLenum severity,
                 GLsizei length,
                 const GLchar* message,
                 const void* userParam )
{
    std::ostringstream os;
    os << "GL LOG: type = " << type << ", severity = " << severity << ", message = " << message;
    log(os.str());
}

这就是我在日志文件中得到的内容:

GL LOG: type = 33361, severity = 33387, message = type: 1, local: 0, shared: 0, gpr: 6, inst: 18, bytes: 192

我如何解释这些数据?有什么方法可以发现哪个 OpenGL 函数或特性导致了该消息?我发现类型 33361 对应于

GL_DEBUG_TYPE_OTHER
,严重性 33387 代表
GL_DEBUG_SEVERITY_NOTIFICATION
,但我忘记了其余的。

c++ logging opengl
1个回答
1
投票

有什么方法可以发现哪个 OpenGL 函数或特性导致了该消息?

调试回调可以同步或异步调用。请参阅调试输出 - 获取消息启用同步调试输出:

glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);

因此,您可以在调试消息的回调中设置断点,并在调用堆栈上查看哪个函数导致了问题。

此外,可以对输出进行过滤。请参阅如何使用 glDebugMessageControl。例如,将输出限制为错误消息:

glDebugMessageControl(
    GL_DEBUG_SOURCE_API, GL_DEBUG_TYPE_ERROR, GL_DONT_CARE, 0, NULL, GL_TRUE);
© www.soinside.com 2019 - 2024. All rights reserved.