我正在使用Qt进行项目.它有一些QGLWidgets,这些工作很漂亮.
问题是,我有一些遗留代码我想使用它使用原始OpenGL命令来做一些纹理和网格处理(渲染网格到图像等).我想从我的Qt代码中调用这些函数,但当然这要求我在调用OpenGL命令之前设置一个新的OpenGL上下文.
我试着做以下事情:
QGLContext context(QGLFormat::defaultFormat()); std::cout << "context creation: " << context.create() << std::endl; if(!context.isValid()) { std::cout << "Cannot create GL context" << std::endl; return false; } context.makeCurrent(); callLegacyOpenGLCode();
但它不起作用.QGLContext :: create()返回false.这是在Windows 7上使用Qt 4.8,使用OpenGL支持编译.
请问Qt为我创建一个新的OpenGL上下文是错误的方法吗?我该怎么做呢?
对于其他搜索此问题的人来说,@ ratchetfreak的建议很好.以下代码正常工作:
QGLWidget tmpwidget; if(!tmpwidget.isValid()) { std::cout << "Cannot create GL context" << std::endl; return false; } tmpwidget.makeCurrent(); callLegacyOpenGLCode();