基于OpenGL的Qt绘制

基于OpenGL的Qt绘制,qt,opengl,qml,Qt,Opengl,Qml,我正在为嵌入式平台开发一个QML应用程序,其中包括一个包含图像的GridView小部件。对我来说,在GridView中滚动将是平滑的,并且不会给CPU带来负载,这一点很重要。我可以期望Qt使用OpenGL渲染GridView吗?默认情况下,Qt不使用OpenGL渲染后端。您可以使用QGlWidget来强制执行它。在您的情况下,由于要使用库存小部件,可以将渲染后端设置为命令行选项: <binary name> -graphicssystem opengl -图形系统opengl 取决

我正在为嵌入式平台开发一个QML应用程序,其中包括一个包含图像的GridView小部件。对我来说,在GridView中滚动将是平滑的,并且不会给CPU带来负载,这一点很重要。我可以期望Qt使用OpenGL渲染GridView吗?

默认情况下,Qt不使用OpenGL渲染后端。您可以使用QGlWidget来强制执行它。在您的情况下,由于要使用库存小部件,可以将渲染后端设置为命令行选项:

<binary name> -graphicssystem opengl
-图形系统opengl

取决于您的平台使用

QApplication::setGraphicsSystem(QLatin1String("opengl"));
或(塞班)


在实例化QApplication对象之前。

我遇到了同样的问题

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。

据我所知,Qt QML可以使用着色器(Qt站点上有一些示例)。。。我想可能涉及到一些OpenGl渲染。着色器将随QtQuick 2.0(Qt 5.0)一起提供,或者您必须使用QtQuick3D。您使用的是哪个Qt版本?它是目前最新的版本。AFAIR,4.6和qtquick 1.0
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);