2015-11-30 2 views
0

Итак, я делаю игру, и мне нужен счетчик FPS, но я понятия не имею, что математика, которую я должен делать за этим. Мой предыдущий счетчик работал, но он обновлялся каждую секунду из-за математики. Я хочу что-то постоянно обновлять, но я просто не знаю, как это сделать. Насколько я могу судить, самый простой способ сделать это - иметь счетчик кадров, и каждый кадр он смотрит на кадры, которые он сделал до сих пор, и время, прошедшее/оставшееся время, и моделирует текущие кадры для остальной части второй и отображает это. Это похоже на хорошую теорию, но я не знаю, как это реализовать на практике. Я знаю, что мне нужно будет использовать System.currentTimeMillis и т. Д. Любая помощь будет принята с благодарностью! Благодаря!Счетчик FPS в Java

EDIT 1

Вот мой FPS код здесь:

double getFPS(double oldTime) { 
    double newTime = System.nanoTime(); 
    double delta = newTime - oldTime; 

    double FPS = 1/(delta * 1000); 
    FPSOldTime = newTime; 

    return FPS; 
} 

ответ

0

Я реализовал что-то подобное в C++. Я предполагаю, что он тоже должен работать на Java. Первая строка функции должна использовать жесткий метод Java.

double get_fps(double old_time) { 
// Something like that in java double new_time = System.getTime().nanoseconds(); 
    double delta = new_time - old_time; 
    double fps = 1/(delta * 1000); 
    old_time = new_time; 
    return fps; 
}; 

Формат двойной с чем-то вроде этого: %2.0f

PS. (Запустите его в игровом цикле, и старое время должно быть инициализировано до игрового цикла. Вы измените его с помощью ссылки.)

+0

Где я могу получить 'new_time'? – TheAustralianBirdEatingLouse

+0

Его комментарий в моем ответе .. '' 'double new_time = System.nanoTime();' '' – Kaspar

+0

Попробуйте его с помощью System.currentTimeMillis и nanotime, посмотрите, какой из них делает трюк на Java. – Kaspar