设置QSurfaceFormat无效

时间:2017-05-17 23:41:19

标签: c++ qt opengl

我目前在Windows上使用Qt 5.8获取调试上下文时遇到问题。

我正在使用Qt 5.8编写一个小型OpenGL应用程序,使用像这样声明的查看器类

class GLViewer3DModel : public QOpenGLWidget, protected QOpenGLFunctions
{
    //...
};

我的main.cpp文件在初始化QApplication之前使用此代码:

 QSurfaceFormat format;     
 format.setOption(QSurfaceFormat::DebugContext);
 format.setProfile(QSurfaceFormat::CoreProfile);
 QSurfaceFormat::setDefaultFormat(format);

在3D查看器的构造函数中,QSurfaceFormat::DebugContext选项似乎已正确设置。但是,如果我在initializeGL覆盖中再次测试,请使用以下代码

void GLViewer3DModel::initializeGL()
{
    initializeOpenGLFunctions();

    QSurfaceFormat fmt = format();
    bool hasDebug = fmt.testOption(QSurfaceFormat::DebugContext);    
    std::cout << "STILL DEBUG? " << hasDebug << std::endl;
}

打印“STILL DEBUG?0”,因此由于某种原因格式发生了变化。 我可以做任何事情来使调试上下文工作吗?我很乐意使用QOpenGLDebugLogger来查看可能出现问题的地方。

FWIW,我的系统支持GL_KHR_debug扩展名。

1 个答案:

答案 0 :(得分:1)

尝试设置大于4.1的OpenGL版本,因为我认为调试是核心的。默认构造的QSurfaceFormat请求GL 2.0,它不支持调试。看看你得到了什么。

同时尝试初始化记录器并查看它向您吐出的内容