在MacOS上使用QOpenGLDebugLogger

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

我希望能够在MacOS上使用QOpenGLDebugLogger功能。

我明白我必须创建一个特定的QOpenGLContext,所以这里是我的自定义QOpenGLWidget类构造函数中的代码:

QSurfaceFormat format;
format.setMajorVersion(3);
format.setMinorVersion(2);
format.setOption(QSurfaceFormat::DebugContext);
format.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(format);

不幸的是,它对我的​​QOpenGLWidget创建的当前上下文没有影响。我的initializeGL()覆盖方法中的以下代码输出false:

qDebug() << QOpenGLContext::currentContext()->hasExtension(QByteArrayLiteral("GL_KHR_debug"));

我注意到QOpenGLContext版本似乎总是2.1:

qDebug() << QOpenGLContext::currentContext()->format().majorVersion() << QOpenGLContext::currentContext()->format().minorVersion();

知道为什么在构造函数中设置格式没有效果吗?

c++ macos qt opengl
1个回答
1
投票

QOpenGLWidget的构造函数请求特定OpenGL上下文版本的正确方法是调用QOpenGLWidget::setFormat(..)方法。另请注意,KHR_DEBUG是在OpenGL 4.3核心配置文件中引入的,因此在此之前可能无法使用此功能。 OpenGL 4.3 Debug上下文的正确设置代码是

QSurfaceFormat format;
format.setMajorVersion(4);
format.setMinorVersion(3);
format.setOption(QSurfaceFormat::DebugContext);
format.setProfile(QSurfaceFormat::CoreProfile);
setFormat(format);
© www.soinside.com 2019 - 2024. All rights reserved.