无论如何,这让我发疯了,通常的故事,试图保证在我的非常简单的游戏中在任何运行它的 Windows 机器上都具有相同的速度。我通过指定 1/60 值来做到这一点,然后确保框架无法运行,直到该值自上次调用以来及时通过。由于某种原因,我遇到的问题是 1/60 等于 30hz,我必须将其设置为 1/120 才能获得 60hz。它也不会在 60hz 上爆炸,它会快一点。
如果我把它贴在这里,有人可以告诉我他们是否发现任何问题?或者更精确的方式来做到这一点?
float controlFrameRate = 1./60 ;
while (gameIsRunning)
{
frameTime += (system->getElapsedTime()-lastTime);
lastTime = system->getElapsedTime();
if(frameTime > controlFrameRate)
{
gameIsRunning = system->update();
//do stuff with the game
frameTime = .0f;
}
}