Page 1 of 1
Как мы измеряем время(таймер) ?
Posted: Thu May 19, 2005 7:28 pm
by andrew_programmer
Чтобы программа одинаково работала и на быстром и на медленном компьютере-нужен таймер.Обычно для измерения времени я использую системный таймер.Но у него есть один недостаток-точность составляет 0.055 секунды(18.2 Гц)
Я пытался понять как измеряется время в игре "PHENIX",но так и не нашел там таймера.Я так понял,что скорость графики там,регулируется временными задержками.
А что делать,если требуется измерять время с точность до 0.033 секунды(30Гц)?
Posted: Fri May 20, 2005 7:00 am
by andrew_programmer
Неужели никто незнает про таймеры?
Может я некорректно задал вопрос,но смысл следующий - как измерять сотые доли секунды,чтобы можно было сделать FPS 60-70 кадров в секунду(это для игры).
Posted: Fri May 20, 2005 7:19 am
by halyavin
Есть функция 26 (подфункция ebx=9) - это то, что тебе надо.
Posted: Fri May 20, 2005 10:36 am
by VaStaNi
Авторитарно заявляю, что "истинно точных" тиков 30 Гц получить не получится, во всяком случае при такой архитектуре ядра!
Перво-наперво разработчику нужно четко знать какой частотой тактируется IRQ0. Это тот элементарный квант времени менее которого система не в состоянии выдавать ни себе ни "на сторону". Как видел из листинга, правда давно речь идет о 100Гц, которые затем могут быть использованы счетчиками в нечто боее крупное, т.е. если надо 30Гц, то это система должна использовать счетчик сo значением = 3 (100/3).
Но это еще не все, надо не забывать, что отчёты не будут ровными, т.к. система не дает реальное время, значит приложение обязательно будет получать "запоздалые тики", даже если все верно.
Posted: Fri May 20, 2005 1:38 pm
by andrew_programmer
Спасибо всем за советы!
Функция 26.9 как раз то,что мне было нужно.
Высокой точности мне ненадо(на игре это не скажется).