我有一个 QGLWidget 的派生类,但是无论我尝试设置什么 QGLFormat,当我调用 isValid() 时,上下文都会返回为无效。
GLWidget::GLWidget(const QGLFormat& glFormat, QWidget* parent)
:QGLWidget(glFormat, parent)
{
//basically just debug output here
}
我像这样创建我的小部件:
QGLFormat glFormat;
glFormat.setSwapInterval(1);
glFormat.setVersion(2, 0);
glFormat.setStencil(true);
glFormat.setStencilSize(8);
glFormat.setProfile(QGLFormat::CompatibilityProfile);
GLWidget * glView = new GLWidget(glFormat, w); //w is the QGraphicsView
w->setViewport(glView);
这段代码是交叉编译到Linux arm的,对硬件本身了解不多。我确实知道支持 OpenGL ES 2.0 本身(我已经测试过了),但我不确定上面的代码是否是我使用 OpenGL ES 2.0 生成上下文的方式。编辑:奇怪的是我可以调用QGLFormat::openGLVersionFlags ()
,这会返回 2048 (OpenGL ES 2.0) 但类参考说:
在运行时标识当前平台支持的 OpenGL 版本。请注意,如果支持 OpenGL 1.5 版,则它的前身(即 1.4 版及更低版本)也受支持。要确定对特定功能(如多纹理)的支持,请测试首次引入该功能的版本(即多纹理情况下的版本 1.3)以适应最大可能的运行时平台组。该函数需要一个有效的当前 OpenGL 上下文才能工作;否则它将返回 OpenGL_Version_None。这个函数是在 Qt 4.2 中引入的。
我想做的与此非常相似。我基本上想要一个可以使用 OpenGL 渲染视频帧的视口。
任何帮助将不胜感激。