在Qt中创建原始GL上下文?

时间:2014-01-30 04:45:52

标签: c++ qt opengl

我正在使用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上下文是错误的方法吗?我该怎么做呢?

1 个答案:

答案 0 :(得分:6)

对于其他搜索此问题的人来说,@ ratchetfreak的建议很好。以下代码正常工作:

QGLWidget tmpwidget;

if(!tmpwidget.isValid())
{
    std::cout << "Cannot create GL context" << std::endl;
    return false;
}

tmpwidget.makeCurrent();
callLegacyOpenGLCode();