使用 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 渲染的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenGL 在 Qt 界面上显示 IPLImage 流进行渲染?

opengl 3 qt渲染空白屏幕

什么时候使用 Qt 在 opengl 中创建渲染上下文?

OpenGL + QT:渲染到纹理并显示回来

Qt/OpenGL - 渲染的图元被扭曲

强制 OpenGL 渲染始终在 Qt 中的相同 (Q) 线程上运行