2012-04-07 26 views
0

GQLWidgetを使用してOpenGLを使用して2つのアプリケーションでこれを検証しました。 screenupdateが非常に頻繁に行われたり、30fpsとか、解像度が高い場合は、コアの1つのCPU使用量が急増します。私はこの問題を解決し、Windows上で発生するかどうかを検証する方法に関する解決策を探しています。Qt OpenGLを使用しているCPUの使用率

+1

あなたはどのような種類のビデオカードを持っていますか?また、デフォルトのウィンドウサイズで「glxgears」を実行するFPSの数はいくつですか? – timday

答えて

6

私の経験では、QGLWidget自体はGLとウィンドウシステムの非常に効率的な薄いラッパーです。 CPU使用率が高い場合は、OpenGLアプリを実装する他の方法を使ってもCPU使用率が高い可能性があります。

あなたはOpenGLを使用して、高いCPU使用率を持っている場合、チャンスはある次のいずれか

  • あなたはソフトウェアのOpenGLの実装(すなわちメサ)にフォールバックしています。 例えば、グラフィックデバイス ドライバをインストールしないと、Debianはこれを行います。
  • あなたは古い学校の即時モードOpenGLを使用しています:glBegin、... vertices ...、glEnd。代わりにVBOを入手してください。

表示解像度を要因と呼ぶという事実は、以前の問題を示唆しています。

1

プロファイラを取得し、コードをプロファイルし、ボトルネックがどこにあるかを確認する必要があります。あなたのプログラムはCPU資源を消費するので(GPUではなく)、これはかなり簡単になるはずです。 「AQTime 7 Standard」(ウィンドウズ)は現在、無料でご利用いただけます。あるいは、あなたのツールキット/プラットフォームによっては、gprofを使うこともできます。

非常に可能性の高いシナリオ(ソフトウェアのOpenGLフォールバック以外)は、動的メモリ割り当てを頻繁に使用するか、デバッグビルドを実行することです。フレームごとに100000以上のポリゴンがある場合、イミディエイトモードが問題になる可能性があります。

0

私は、ホストCPUの使用を最小限に抑えることにひどいGL実装をいくつか見てきました。 GPUが描画中にCPUがビジー状態になる状況はたくさんあります。多くの場合、カード設定で垂直同期をオンにするだけで、アプリの描画回数が少なくなり、CPUの使用量が増えます。 残念ながら、あなたのアプリを描く頻度を制限するのではなく、これについて自分自身で行うことはほとんどありません。