我们将 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()
.
谢谢