如何在不创建新线程的情况下在Qt窗口内运行游戏循环?
我的“RunFrame”方法如下所示:
void GameWindow::RunFrame()
{
// Update the game time.
gameTime.Update();
timeBehind += gameTime.TotalTime() - lastTime;
lastTime = gameTime.TotalTime();
while( timeBehind >= targetTimeStep )
{
Update();
timeBehind -= targetTimeStep;
}
Draw();
SwapBuffers();
}
正如您所看到的,它运行就好像每个事件循环都被调用一样。有没有办法让我的窗口中的方法被调用每个事件循环?或者我应该在Qt中围绕计时器重新设计我的循环?
答案 0 :(得分:1)
我认为QTimer是一个工作且相对简单的解决方案。它使用多媒体计时器(如果需要)来达到毫秒级分辨率,因此它适用于游戏循环。