C++ Getting 1.#INF

C++ Getting 1.#INF

本文关键字:#INF Getting C++      更新时间:2023-10-16

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

下面是插值函数:
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.4fn", lastFps);
}

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

任何想法?

最有可能的是,deltaTime在某一点上为零(由于帧的绘制时间不到一毫秒)。这使得fps = 1.0f / deltaTime;的值为无穷大。由于你做插值的方式,一旦一个无穷大的值进入系统,lastFps将永远是无穷大的。