我希望能够在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();
知道为什么在构造函数中设置格式无效吗?
最佳答案
向QOpenGLWidget
的构造函数请求特定OpenGL上下文版本的正确方法是调用QOpenGLWidget::setFormat(..)
方法。另请注意,KHR_DEBUG是在OpenGL 4.3核心配置文件中引入的,因此在此之前可能无法使用此功能。 OpenGL 4.3调试上下文的正确设置代码为
QSurfaceFormat format;
format.setMajorVersion(4);
format.setMinorVersion(3);
format.setOption(QSurfaceFormat::DebugContext);
format.setProfile(QSurfaceFormat::CoreProfile);
setFormat(format);
关于c++ - 在MacOS上使用QOpenGLDebugLogger,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47907526/