我目前在Windows上使用Qt 5.8获取调试上下文时遇到问题。
我正在使用Qt 5.8编写一个小的OpenGL应用程序,使用声明为这样的查看器类
class GLViewer3DModel : public QOpenGLWidget, protected QOpenGLFunctions
{
//...
};
在QApplication初始化之前,我的
main.cpp
文件使用以下代码: 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
扩展名。 最佳答案
尝试将OpenGL版本设置为大于4.1,因为我认为这是调试的核心。默认构造的QSurfaceFormat请求不支持调试的GL 2.0。看看你得到什么。
另外,尝试初始化记录器,看看它会吐出什么来