3

画面にブリットする必要があるフレームを提供するライブラリを使用しています。バッファを割り当てると、このライブラリはこのバッファに直接書き込みます。必要な場合は、このバッファーの指定された部分を画面にブリットする必要があります。Qt と OpenGL/ES ペイント エンジンを使用してレンダリングしています。

質問: 画面にブリットする最速の方法は何ですか? QImage現在、データへのポインターを受け入れるコンストラクターを使用してバッファーをロードしています。これにより、コピーが回避されます。次に、 のdrawImage()方法を使用QPainterして、画面の正しい領域にブリットします。このメソッドは、領域のコピーを GPU メモリにロードし、OpenGL テクスチャを使用して画面にブリットすると思います。

プロセスをスピードアップするために、このコピーを避けることは可能でしょうか? たとえば、GPU に転送する必要がないように、OpenGL テクスチャで直接描画することは可能でしょうか? ピクセル バッファ オブジェクトを読みました。それが解決策になるのではないでしょうか?この目的で を使用してもQGLFramebufferObjectよろしいですか?

4

1 に答える 1

1

最終的には GPU に書き込む必要があります。できることは、不要なコピーの数と、たとえば RGBA から BGRA への CPU 内変換を最小限に抑えることだけです。

QImageQPainter から始めて、最適化を開始する前に、グラフィックス速度が制限ステップであるかどうかを確認します。

このリンクを見てください。

一般的な OpenGL のアドバイスの多くは、opengl-ES には当てはまらないことに注意してください。ES は OpenGL とはまったく別の概念と考えるのが最善です。

于 2011-12-09T16:59:11.583 に答える