在Qt窗口内运行游戏循环

时间:2014-07-27 07:17:20

标签: c++ qt

如何在不创建新线程的情况下在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中围绕计时器重新设计我的循环?

1 个答案:

答案 0 :(得分:1)

我认为QTimer是一个工作且相对简单的解决方案。它使用多媒体计时器(如果需要)来达到毫秒级分辨率,因此它适用于游戏循环。