fps моей программы неверны. Когда я вычисляю fps своего приложения с использованием статистики RivaTuner, он дает, например, 3000 кадров в секунду. Но моя программа вычисляет действительно другое число, например, 500. Оно все время идет вверх и вниз, в то время как Rivatuner этого не делает.C++ Неверное измерение FPS и deltaTime с использованием std :: chrono
Это, как я вычислить DeltaTime (переменная DeltaTime с плавающей точкой):
std::chrono::high_resolution_clock timer;
auto start = timer.now();
...doing stuff here...
auto stop = timer.now();
deltaTime = std::chrono::duration_cast<std::chrono::microseconds>(stop - start).count()/1000.0f; //DELTATIME WAS LESS THAN 1 MILLISECOND SO THAT IS WHY I USED THIS
Это, как рассчитать FPS:
float fps = (1.0f/deltaTime) * 1000.0f;
Я умножать свои скорости игры с переменной DeltaTime , а потому, что он делает странные вещи (все вверх и вниз очень быстро все время), которые тоже прищурены. Так, например, мой RivaTuner говорит, что в 2000 fps моя игра работает медленнее, чем когда она говорит 4000 кадров в секунду.
Но когда приложение работает медленнее, ему требуется больше времени для рендеринга 1 кадра (так, чем выше дельта-время, тем выше скорость игры?).
Это правильно?
Заранее спасибо.
Вы пересчитываете fps для каждого кадра отдельно? Это объясняет скачкообразность вашего результата. Вы получите гораздо более точные результаты, если вы возьмете среднее значение в течение более длительного времени. – JSQuareD
Даже если я это сделаю, скорость игры по-прежнему остается нервной. –
На сколько кадров/сколько времени вы усредняете по своим результатам? – JSQuareD