Алгоритм отображение FPS
Доброго времени суток. Зарание извеняюсь за глупый вопрос, но ничего хорошего не нашел... Помогите написать алгоритм отображения FPS без постоянных мерцаний, с пояснением кода.
|
Ответ: Алгоритм отображение FPS
Функция, возвращает количество вызовов себя за секунду, причем это значение обновляется раз в секунду:
Код:
var |
Ответ: Алгоритм отображение FPS
Вопрос fps2:=pr_fps; не так должно быть fps:=pr_fps; ? И если да, то почему-то показывает 0.
|
Ответ: Алгоритм отображение FPS
Вложений: 1
Да, точно.
В общем, так: под катом - полный код модуля с 2мя функциями подсчета фпс: (первая - отсюда (немного доработал)) В аттаче - скомпиленная из этого кода библиотека. |
Ответ: Алгоритм отображение FPS
AVL можешь объяснить такую штуку... Второй способ я находил в открытых проектах и ставил себе в код, вроде все работало нормально, но порой по неизвестным мне причинам он начинал показывать 0 как на телефоне, так и на эмуле. Вот и сейчас второй способ показывает 0... Допустим пишу программу фпс отображает, позже начинается какой-то глюк показывает 0, через время опять показывает нормальное значение и так по кругу. С чем это связано?
зы компилил 2.02 en и 3.5 без разницы |
Ответ: Алгоритм отображение FPS
Вот моя версия:
|
Ответ: Алгоритм отображение FPS
Цитата:
|
Ответ: Алгоритм отображение FPS
Я в модуле делал функцию RepaintFPS:integer;
которая каждый раз возвращала время между кадрами и рисовала фпс (оно другое) на экран |
Ответ: Алгоритм отображение FPS
Ну я делал так. Надеюсь все понятно будет :mda:
К некому циклу (процедуре) привязывается счетчик, который приращивается на столько, сколько занимает "должная" задержка (допустим есть некий цикл с задержкой 25 миллисекунд в конце. Следовательно, каждый такт приращивает счетчик на 25). Как только счетчик равен или больше 1000 - Сбрасываем счетчик (отнимаем 1000), вычисляем реальное время, прошедшее от того момента, когда счетчик был равен нулю, до того, когда он перевалил за 1000. далее следует такая формула: задержка цикла*1000/время реальной задержки. Пример: Цикл должен был выполниться 40 раз за секунду (25 миллисекунд задержка цикла). Но это произошло за две реальных секунды (по секундомеру). 25*1000/2000=12.5 ФПС. И да, процедуру проверки заполненности счетчика лучше вынести в отдельный поток. Так то! |
Ответ: Алгоритм отображение FPS
|
Часовой пояс GMT +4, время: 17:41. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot