1105498_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

1105498_ja-JP

1105498_ja-JP

Qt5 QPainter vs. QML & Scene Graph.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Qt5では、開発をはるかに簡単にする新しいテクノロジーが追加されています。

  • Qtquick2の
  • シーングラフ
  • QMLの

Qt5は下位互換性があり、Qt 4.8アプリケーションを実行できますが、だからといって最高のパフォーマンスが得られるわけではありません。

Qt5には、コンポーネントを画面にペイントするための2つのオプションがあります。Qt 5 でのペイントは、主に次のいずれかで行われます。

  • 命令型の QPainter API
  • Qtの宣言型UI言語、 QML、およびそのシーングラフバックエンド。


Qタッチパネル

このドキュメントでは、 Qt5GraphicsOverview |Qtウィキ|Qtプロジェクト Qpainterエンジンは、ソフトウェアを使用してペイントし、QimagesまたはQwidgetsを描画するときに使用されます。OpenGLに対するその利点は 、アンチエイリアシングが有効になっている場合の高品質と、完全な機能セットです。

Qpainter は OpenGL エンジンを使用できますが、ドキュメントに記載されているように、状態の変化の影響を受けやすくなります。そして、慎重に使用する必要があります。


QML とシーングラフ


すべてのビジュアルQMLアイテムは、OpenGLと密接に結びついた低レベルで高性能なレンダリングスタックであるシーングラフを使用してレンダリングされます


Qt Quick 2は、OpenGL ES 2.0またはOpenGL 2.0をベースにした専用のシーングラフをレンダリングに利用しています。従来の命令型ペイントシステム(QPainterなど)ではなく、グラフィックスのシーングラフを使用すると 、レンダリングされるシーンをフレーム間で保持でき、レンダリングが開始される前にレンダリングするプリミティブの完全なセットがわかっています。これにより、状態の変化を最小限に抑えるためのバッチレンダリングや、不明瞭なプリミティブの破棄など、多くの最適化が可能になります。


QML シーングラフは、 Qt 5 の QML の新しいバックエンドであり、OpenGL に基づいています。これは一般的に、 Qt 4で使用されていたQPainterベースのバックエンドよりもQMLのパフォーマンスを大幅に向上させます。これにより、さまざまな方法でパフォーマンスが向上します。


  • シーングラフは、ラスターまたは OpenGL ペイントエンジンのいずれかを使用している可能性のある QPainter を経由する代わりに、OpenGL を直接使用します。これは、ジオメトリ、テクスチャ、シェーダーなどのすべてのリソースを、QPainterPath、QPixmap、QBrush、QPenなどのクラスを使用するのではなく、OpenGLに適した形式で保存できることを意味します。これは、QPainterがOpenGLプリミティブに変換し、場合によってはキャッシュする必要があります。
  • QMLは宣言型言語であり、最終結果がどのように見えるべきかを定義しますが、個々の要素がどのように、そしてどの順序で描画されるかは定義しません。したがって、描画の順序を変更して状態変更の数を減らしたり、マージして描画呼び出しの数を減らしたりすることができます。
  • シーン グラフは別のレンダリング スレッドを使用し、アニメーションを垂直リトレースと同期します。これをサポートできるプラットフォームでは、リトレースがサポートされます。レンダリング スレッドを使用すると、現在のフレームがレンダリングされるのと同時に次のフレームの準備を行うことができます。これは、レンダリング スレッドが OpenGL コマンドでブロックする可能性があるため、シングルコア システムにもプラスの効果があります。垂直方向のリトレースとの同期により、アニメーションの滑らかさが向上します。

i.MX6 両方のオプションでテストし、QML Qtquick2 要素を使用して最良の結果を得ました。ウィジェットを介してQtPainterを使用しようとすると、X11やWaylandのようなウィンドウシステムを使用しないと、Painterがうまく機能せず、QtGLWidgetしか表示されないという問題に直面しました。

QMLシーングラフを使用すると、OpenGL要素とQt要素を同じ環境上に持つことができ、一方を他方と通信して変数を共有する簡単な方法があります。ここで結果の例をご覧ください: I.MX6 シーングラフ Qt5 - YouTube

そして大きな利点は、sceneGraph がすべて OpenGL によって高速化されることです。

Re: Qt5 QPainter vs. QML & Scene Graph.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

こんにちは

私は、もともとQt4.7に基づいており、iMX35で実行されている大規模なアプリケーションをQt5.1を使用してiMX6に移植しています。

私のレガシーアプリケーションには、QPainter APIに基づく2D描画がたくさんあります。

QWidgetをQGLWidgetに置き換えて、ハードウェアアクセラレーションQPainterAPIを取得することを望んでいました。そうではないようです。

私はQPainterを使い続けており、Qt 4.7のようなソフトウェアレンダリングしか利用できません

ハードウェアアクセラレーションによる2Dレンダリングが必要な場合は、gl APIを使用してすべての描画コードを書き直す必要があります。

私の理解は正しいですか?

Fabio

Re: Qt5 QPainter vs. QML & Scene Graph.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

FranciscoCarrilloさん、この文書を公開の i.MX コミュニティに移動して、外部のメンバーがアクセスできない場所にある文書を指しないようにしていただけませんか?そして、この問題を報告した以下の公開ディスカッションに投稿を追加しますか?

リンクされた記事には、「この場所またはコンテンツへのアクセスは制限されています..."                    

この質問は 答えられていません。(想定どおりに回答済みとしてマーク)

スティーブン・ラングスタッフ     レベル1

「この場所やコンテンツへのアクセスは制限されています。これが間違いだと思う場合は、管理者またはここにあなたを案内した人に連絡してください。https://community.freescale.com/docs/DOC-94234 にアクセスしようとすると、EGLFSのQT5デモエラーから指摘されています。


よろしくお願いします。

叶える

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-06-2026 01:53 AM
更新者: