在QT中创建RAW GL上下文

Create raw GL context in Qt?

本文关键字:GL 上下文 RAW 创建 QT      更新时间:2023-10-16

我正在将QT用于项目。它有一些QGLWIDGETS,并且它们的作用很好。

问题是,我想使用一些使用RAW 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();