2011-06-27 84 views
7

我正在开发一个嵌入式平台的QML应用程序,其中包含一个包含图像的GridView小部件。滚动浏览GridView对我来说非常重要,不会对CPU造成负担。我可以期待Qt使用OpenGL渲染GridView吗?使用OpenGL进行Qt渲染

+0

据我所知关于Qt QML你可以使用着色器(在Qt网站上有例子)......我猜想一些OpenGl渲染涉及到。 – vrince

+0

着色器将带有QtQuick 2.0(Qt 5.0),或者您必须使用QtQuick3D。 – blakharaz

回答

5

我面临同样的问题。

QApplication::setGraphicsSystem(QLatin1String("opengl")); 

没有为我工作。因此,我将OGWidget设置为视口:

QDeclarativeView mainwindow; 
mainwindow.setSource(QUrl::fromLocalFile("./qml/app.qml")); 
QGLFormat format = QGLFormat(QGL::DirectRendering); // you can play with other rendering formats like DoubleBuffer or SimpleBuffer 
format.setSampleBuffers(false); 
QGLWidget *glWidget = new QGLWidget(format); 
glWidget->setAutoFillBackground(false); 
mainwindow.setViewport(glWidget); 

并且不要忘记在* .pro文件中添加opengl。

+0

你使用哪个qt版本? –

+0

这是目前的最新版本。 AFAIR,4.6与qtquick 1.0 – avida

2

默认情况下,Qt不使用OpenGL渲染后端。你可以使用QGlWidget来强制执行它。在你的情况下,只要你想使用股票小部件,您可以设置渲染后端作为一个命令行选项:

<binary name> -graphicssystem opengl 
+0

它不适用于我,如果我补充:graphicssystem opengl – olidev

+0

[“-graphicssystem”选项已从Qt5删除](https://bugreports.qt.io/browse/QTBUG-41265) – Color

3

根据您的平台使用

QApplication::setGraphicsSystem(QLatin1String("opengl")); 

或(塞班)

QApplication::setGraphicsSystem(QLatin1String("openvg")); 

实例化QApplication对象之前。