ビジュアライゼーション エンジン ビューアに Qt を使用していますが、そのQApplication::processEvents()
方法に問題があります。フレームレートを (ゲーム ループのように) 制御する必要があったため、QApplication をオーバーライドして、独自のゲーム ループと次のようなゲーム ループを定義しました。
MainApplication app;
// Some code here
while (true) {
app.processEvents();
app.doFrame();
// sync code, nothing for now
}
これは正常に動作し、呼び出しのタイミングは約 0.001 秒ですがprocessEvents()
、空のシーンの場合doFrame()
は約 0.0001 秒かかります。ここで、(ウィンドウを最大化するために) タイトル バーをダブルクリックすると問題が発生します。実際、それを行った後、processEvents()
call は約 0.001 秒から約 0.01 秒 (*10) になります。ほとんどの時間は取り込まれているようですQPlatformBackingStore::composeAndFlush()
使用されるビューアーは QOpenGLWidget に基づいており、すべてのレンダリングは Qt の外部で行われます (Qt FBO で記述しています)。
をオーバーライドしていないことに注意してくださいQApplication::processEvents()
。
ありがとう