2

我们将 Qt 用于可视化引擎查看器,但该QApplication::processEvents()方法存在问题。由于我们需要控制帧率(以游戏循环方式),我们重写了 QApplication 来定义我们自己的和我们的游戏循环,看起来像

MainApplication app;
// Some code here
while (true) {
    app.processEvents();
    app.doFrame();
    // sync code, nothing for now
}

这很好用,processEvents()通话时间约为 0.001 秒,而对于空场景,通话doFrame()时间约为 0.0001 秒。现在,当我们双击标题栏(最大化窗口)时,我们遇到了一个问题。实际上,在这样做之后,processEvents()调用从大约 0.001 秒变为大约 0.01 秒 (*10)。大部分时间似乎都被占用了QPlatformBackingStore::composeAndFlush()

使用的查看器是基于 QOpenGLWidget 的,所有的渲染都是在 Qt 之外完成的(我们在 Qt FBO 中编写)。

请注意,我们没有覆盖QApplication::processEvents().

谢谢

4

0 回答 0