2016-07-13 30 views
7

私は計算的に強力な計算の間に新しいQt 3D APIを使用して3Dシーンを表示しています。このシーンは、ユーザーの入力に対する応答としてのみ変化します。しかし、Qt 3Dのデフォルトの動作は、シーンのフレームレートを高い一定の値に固定するように見えます。この場合、容認できない量のリソースが消費されます。Qt 3Dでフレームレートを制御するにはどうすればよいですか?

Qt 3Dでフレームレートを制御する方法はありますか?理想的には、シーンに変更が加えられたときに新しいフレームをレンダリングするだけですが、固定値を小さくすることで十分です。 Qt 3Dドキュメントは疎であり、これらのことを行う方法を見つけることができませんでした。

編集:QRenderSettings::OnDemandを自分のルートノードとフレームグラフに適用しても効果はありませんが、thisはQt 5.7を使用しています。これに関する追加入力は非常に歓迎されます(たとえそれがコメントを保証するだけであっても)。

編集2:Frapsをインストールしてフレームレートを直接測定すると、シーンは実際にはQRenderSettings :: OnDemandを適用して必要に応じてレンダリングするだけです。これがなければ、フレームレートは安定した60fpsに留まり、これは私の画面のリフレッシュレートになります。 しかし、3Dウィンドウが表示されているかどうかにかかわらず、プログラムはQt 3Dを有効にしたままアイドリングしている間、大量のCPU時間を消費し続けます。私はこれがフレームレートとは無関係の別個のQt 3D問題であると考え始めており、それに応じて新たな質問が開かれるようです。

+0

あなたのグラフィックスとは関係ないと確信していますか? –

+1

何fpsで動作していますか、あなたの好みに合わせて最高のfpsは何ですか? –

+0

これは一見価値があるかもしれません。それはおそらくそれを解決しませんが、それは問題にいくつかの光を当てるかもしれません。 http://stackoverflow.com/questions/36181532/qt-qapplication-framerate-drop-when-maximizing-window –

答えて

2

ヘッダーファイル<FrameRateRange>には、おそらくクラスFrameRateRangeを使用することをお勧めします。このクラスには、2つのパブリック関数、FrameRateRange()FrameRateRange(qreal minimumFrameRate, qreal maximumFrameRate)があります。 qrealは、後者の関数の両方のパラメータに現れるパラメータです。これはヘッダファイル<QtGlobal>で宣言されたグローバルtypedefです。 minimumおよびmaximumは、1秒あたりのフレームレートのフレームレートです。詳細はherehereです。

+1

FrameRateRangeはQt 3Dとはまったく関係がないようですので、私はこの回答を受け入れることができませんが、あなたが一番唯一の回答であり、あなたの質問が問題の詳細を理解する手助けをしたので、 。 –

関連する問題