我目前在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
扩展名。
答案 0 :(得分:1)
尝试设置大于4.1的OpenGL版本,因为我认为调试是核心的。默认构造的QSurfaceFormat请求GL 2.0,它不支持调试。看看你得到了什么。
同时尝试初始化记录器并查看它向您吐出的内容