2

ビジュアライゼーション エンジン ビューアに 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()

ありがとう

4

0 に答える 0