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