C++ 获取 1.#INF
C++ Getting 1.#INF
我正在尝试计算我的游戏的 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 都是浮点数(我也试过 double 但没有区别)但是当 printf 执行时我得到 1.#INF
有什么想法吗?
最有可能的是,deltaTime
在某一时刻为零(由于绘制帧的时间不到一毫秒)。这给出了 fps = 1.0f / deltaTime;
的无穷大值。由于您进行插值的方式,一旦无穷大的值进入系统,lastFps
将永远是无穷大。
我正在尝试计算我的游戏的 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 都是浮点数(我也试过 double 但没有区别)但是当 printf 执行时我得到 1.#INF
有什么想法吗?
最有可能的是,deltaTime
在某一时刻为零(由于绘制帧的时间不到一毫秒)。这给出了 fps = 1.0f / deltaTime;
的无穷大值。由于您进行插值的方式,一旦无穷大的值进入系统,lastFps
将永远是无穷大。