【问题标题】:Qt rendering using OpenGL使用 OpenGL 进行 Qt 渲染
【发布时间】:2011-06-27 12:51:46
【问题描述】:

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

【问题讨论】:

  • 据我所知 Qt QML 您可以使用着色器(Qt 网站上有示例)...我猜这涉及到一些 OpenGL 渲染。
  • 着色器将随 QtQuick 2.0 (Qt 5.0) 提供,或者您必须使用 QtQuick3D。

标签: qt opengl qml


【解决方案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
    
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多