1

我正在用 C++ 编写游戏,但我无法创建一种让游戏每秒只更新 60 次的方法。我编写的代码看起来应该可以工作,但帧速率实际上是每秒 44 帧而不是 60 帧。

const int               FRAMES_PER_SECOND = 60;
const int               FRAME_CONTROL = (1000 / FRAMES_PER_SECOND);
double                  lastFrameTime;
double                  currentFrameTime;

void GameLoop()
{
    currentFrameTime = GetTickCount();

    if ((currentFrameTime - lastFrameTime) >= FRAME_CONTROL)
    {
        lastFrameTime = currentFrameTime;

        // Update Game.
    }
}

所以是的,它应该是 60 帧,但它实际上以 44 帧运行。我用来计算帧速率的类在其他已经有上限帧速率的程序中完美运行。

任何想法是什么问题?

4

1 回答 1

3

它是由于getTickCount. 该函数仅提供 10-16 毫秒的分辨率Microsoft GetTickCount()

于 2013-04-19T16:39:30.837 回答