Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt中创建原始GL上下文?_C++_Qt_Opengl - Fatal编程技术网

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

C++ 在Qt中创建原始GL上下文?,c++,qt,opengl,C++,Qt,Opengl,我正在为一个项目使用Qt。它有一些QGLWidget,它们工作得很好 问题是,我想使用一些遗留代码,这些代码使用原始OpenGL命令进行纹理和网格处理(将网格渲染为图像等)。我想从我的Qt代码中调用这些函数,但这当然需要在调用OpenGL命令之前设置一个新的OpenGL上下文 我试着做到以下几点: QGLContext context(QGLFormat::defaultFormat()); std::cout << "context creation: " << con

我正在为一个项目使用Qt。它有一些QGLWidget,它们工作得很好

问题是,我想使用一些遗留代码,这些代码使用原始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上下文(QGLFormat::defaultFormat());

std::cout对于任何其他正在研究这个问题的人来说,@ratchetfreak的建议是一个很好的建议。以下代码正常工作:

QGLWidget tmpwidget;

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

tmpwidget.makeCurrent();
callLegacyOpenGLCode();
QGLWidget-tmpwidget;
如果(!tmpwidget.isValid())
{

std::无法创建一个新的glwidget,您不显示并使用它的上下文。在最近的版本中(使用QOpenGLWidget而不是QGLWidget),这可能不再起作用了吗?至少当我在调用callLegacyOpenGLCode()的地方调用glGetString(GL_VERSION)时,它返回null