2011-07-07 45 views
1

驚いたことに、私はQWidgetをQGLWidgetに切り替えました。そして、私のQPainter :: drawImage呼び出しは5倍高速になりました。ウィジェットタイプを除いて、私は何も変えなかった。どのようにQPainterコールのパフォーマンスが向上しますか?私はうまく動くが、私はちょうど方法を理解していない。何か案は?QGLWidgetはQTでどのように機能しますか?

ありがとうございました。

答えて

2

QGLWidgetは、ハードウェアが加速することができるお使いのシステム上で利用可能なOpenGLの実装を使用しています。それはあなたのシステムによって異なります。 Qtウィジェットは、異なるQPaintEngineを使ってレンダリングできます。 -graphicssystemパラメータを使用してアプリケーションを実行しようとすると、OpenGLを使用するようにグラフィックスシステム全体を変更することさえできます。現在、Qt for Linux Embeddedではこれを行うことはできません。たとえば、animatedtilesの例を実行している違いを試すことができます。 これは必ずしもパフォーマンスがラスタペインタより優れているとは限りません。それはシステムのOpenGLの実装に依存します。ソフトウェアだけの場合は、パフォーマンスがさらに悪くなる可能性があります。

+0

しかし、私はまだqpainterオブジェクトを使用しています。私はそれを変更しませんでした。私は、glwidgetが明らかにする以上のコントロールをしていると思います。 – glutz

+0

申し訳ありませんが、クラスに間違った名前を使用しました。私は答えを編集しました。クラスは同じですが、あなたは常にQPainterを使いますが、別のQPaintEngineの下で使うことができます。 QGLWidgetでは、QPainterで使用されるデフォルトのエンジンはQRasterPaintEngineではなくQOpenGLPaintEngine(名前が正しく覚えていれば)です。これにより、http://doc.qt.nokia.com/latest/qpaintengine.html#detailsが明確になります。 –

+0

こんにちは、これは恐らく疑問な質問ですが、 "ハードウェアアクセラレーション"とはどういう意味ですか?より多くのCPUを使用しているのか、それともグラフィックスカードを使用しているのでしょうか? – Anthony

0

OpenGLを使用してコンテンツを表示します。

0

それはおそらく、ハードウェアアクセラレーションを使用しています、OpenGLを使用していた場合

関連する問題