2015-09-24 22 views
0

我正在嘗試計算我的遊戲的FPS,但值不穩定,所以我想實現線性插值以使顯示的文本平滑。問題是我獲得1.#INF值,我嘗試了谷歌搜索,但無法真正找到解釋。C++獲取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

您的示例不是(非常)可編輯的複製品。如果你可以修復它成爲一個編譯和運行的獨立示例,那就太好了。然後也使用調試器。 – Puppy

+2

deltaTime至少一次等於0,可能是第一次。哪些產生無限。你永遠不會再擺脫它。 –

回答

1

最有可能的是,deltaTime在一個點上爲零(由於幀的繪製時間少於1毫秒)。這給了fps = 1.0f/deltaTime;無窮大的值。並且由於您進行插值的方式,一旦無限大的值進入系統,lastFps將永遠是無限的。