我有一个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中引入的。
我想要做的与this非常相似。我基本上想要一个视口,我可以使用OpenGL渲染视频帧。
非常感谢任何帮助。