2011-06-27 19 views
7

イメージを含むGridViewウィジェットを含む埋め込みプラットフォームのQMLアプリケーションで作業しています。 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")); 

haven`t work for me。だから私は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

グラフィックスカードopengl – olidev

+0

["-graphicssystem"オプションがQt5から削除されました](https://bugreports.qt.io/browse/QTBUG-41265) – Color

3

ご使用のプラットフォームの使用に応じて

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

または(シンビアン)

:あなたは株式ウィジェットを使用したいとあなたのケースでは、コマンドラインオプションとしてレンダリングバックエンドを設定することができます
QApplication::setGraphicsSystem(QLatin1String("openvg")); 

QApplicationオブジェクトをインスタンス化する前に。

関連する問題