1

我有一个 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 渲染视频帧的视口。

任何帮助将不胜感激。

4

0 回答 0