c++ - 问题控制游戏帧率 C++

标签 c++ frame-rate game-loop

我正在用 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 帧运行。我用来计算帧速率的类在其他已经具有上限帧速率的程序中完美运行。

知道问题出在哪里吗?

最佳答案

这是由于 getTickCount 的解析。该函数仅提供 10-16 毫秒的分辨率 Microsoft GetTickCount()

关于c++ - 问题控制游戏帧率 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16109417/

相关文章:

java - 回合制游戏的游戏循环

c++ - std map 和 multimap 迭代器是一样的吗?

objective-c - 我应该在 Xcode 中使用什么工具来查看 FPS?

Java游戏: Keeping framerate the same on all computers

java - "deWiTTERS Game Loop"是否假设不间断电源?

java - 限制游戏循环中的绘制处理

c++ - boost::thread_group - 在 join_all 之后调用 create_thread 可以吗?

c++ - 如何在 C++ 中实现 grep 以便它与管道(stdin 等)一起工作?

c++ - MFC向CWnd成员添加滚动条

ffmpeg - 使用 ffmpeg 将 mp4 转换为 gif 时降低 fps