【问题标题】:Issue controlling game frame rate C++问题控制游戏帧率 C++
【发布时间】:2013-04-19 16:35:44
【问题描述】:

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

任何想法是什么问题?

【问题讨论】:

  • // Update Game 是否能够在不到六十分之一秒内运行?
  • 您的游戏是否可能过于密集而无法管理 60 FPS?
  • 是的,如果没有帧速率控制,它会以每秒 500 帧左右的速度愉快地运行。

标签: c++ frame-rate game-loop


【解决方案1】:

这是由于getTickCount 的分辨率。该功能仅提供 10-16 毫秒的分辨率 Microsoft GetTickCount()

【讨论】:

  • 哦,非常感谢。我会阅读有关高分辨率计时器的信息,除非您知道可以指点我的好用的计时器吗?
  • 您可以包含 并使用 omp_get_wtime()。它以非常高的精度返回以秒为单位的时间。
  • 我使用 GLFW,它包含一个高分辨率计时器。
猜你喜欢
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 2021-06-30
  • 1970-01-01
相关资源
最近更新 更多