C ++获取1.#INF

时间:2015-09-24 17:29:39

标签: c++ interpolation linear

我正在尝试计算我的游戏的FPS,但是值不稳定,所以我想实现线性插值以使显示的文本平滑..问题是我得到1.#INF值,我试过谷歌搜索,但无法找到解释。

这是插值函数:

float Lerp(float from, float to, float t)
{
    return (from*(1 - t) + to*t);
}

我如何计算FPS:

void CalculateTime()
{
    deltaTime = (float)(SDL_GetTicks() - lastFrameTime) / 1000.0f; // this is around 0.02 each frame
    fps = 1.0f / deltaTime; // this is 50-60 every frame
    lastFps = Lerp(fps, lastFps, 0.5f); // lastFps is initialized at 60.0
    printf("%2.4f\n", lastFps);
}

一切似乎都很好.. deltaTime,fps,lastFps都是浮点数(我试过双倍但没有区别)但是当printf执行时我得到1.#INF

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

最有可能的是,deltaTime在一个点上为零(由于帧占用的时间不到一毫秒)。这为fps = 1.0f / deltaTime;提供了无穷大的值。由于你进行插值的方式,一旦无穷大的值进入系统,lastFps将永远是无限的。