我们正在将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.001s到大约0.01s(* 10)。大部分时间似乎都是在QPlatformBackingStore::composeAndFlush()
使用的查看器基于QOpenGLWidget,所有渲染都在Qt之外完成(我们在Qt FBO中编写)。
请注意,我们并未覆盖QApplication::processEvents()
。
由于