Я пытаюсь вычислить FPS моей игры, но значение нестабильно, поэтому я хотел реализовать линейную интерполяцию, чтобы сделать отображаемый текст гладким. Проблема в том, что я получив 1. # INF-значения, я попробовал поиск по Google, но не смог найти объяснения.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, кадров в секунду, lastFps все поплавки (я пытался дважды слишком но никакой разницы), но когда printf выполняет, я получаю 1. # INF
Любые идеи?
Ваш образец не является (вполне) компилируемым воспроизведением. Если бы вы могли исправить это, чтобы быть независимым примером, который компилируется и запускается, это было бы неплохо. А затем также используйте отладчик. – Puppy
deltaTime как минимум один раз равен 0, возможно, в первый раз. Который порождает бесконечность. Вы никогда не избавитесь от него снова. –