使用 OpenGL 进行 Qt 渲染
Posted
技术标签:
【中文标题】使用 OpenGL 进行 Qt 渲染【英文标题】:Qt rendering using OpenGL 【发布时间】:2011-06-27 12:51:46 【问题描述】:我正在为嵌入式平台开发一个 QML 应用程序,其中包括一个包含图像的 GridView 小部件。对我来说重要的是滚动 GridView 会很流畅并且不会给 CPU 带来负担。我可以期望 Qt 使用 OpenGL 来呈现 GridView 吗?
【问题讨论】:
据我所知 Qt QML 您可以使用着色器(Qt 网站上有示例)...我猜这涉及到一些 OpenGL 渲染。 着色器将随 QtQuick 2.0 (Qt 5.0) 提供,或者您必须使用 QtQuick3D。 【参考方案1】:我遇到了同样的问题。
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版本? 目前是最新版本。 AFAIR,4.6 与 qtquick 1.0【参考方案2】:取决于您的平台使用情况
QApplication::setGraphicsSystem(QLatin1String("opengl"));
或(塞班)
QApplication::setGraphicsSystem(QLatin1String("openvg"));
在实例化 QApplication 对象之前。
【讨论】:
【参考方案3】:默认情况下,Qt 不使用 OpenGL 渲染后端。您可以通过使用 QGlWidget 来强制执行它。在您的情况下,当您想使用股票小部件时,您可以将渲染后端设置为命令行选项:
<binary name> -graphicssystem opengl
【讨论】:
"-graphicssystem" option was deleted from Qt5以上是关于使用 OpenGL 进行 Qt 渲染的主要内容,如果未能解决你的问题,请参考以下文章