Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Синхронизация по времени


Страницы:   1 2

Juster~ ©   (2003-02-11 17:29:00) 

Здравствуйте! Мне нужно чтобы скорость анимации в OGL программе не зависела от FPS. А то у меня если 1 обьект на экране, то FPS=~90 и все двигается быстро, а если 10 обьектов, то FPS снижается и соответственно снижается скорость. Это все потому, что я пользую обычный цикл прорисовки (как у Jan Horn"a). А нужно чтоб все по атомным часам шло :) Кто знает?


Juster~   (2003-02-14 14:44:00) [21]

Мне стыдно говорить, но...я давно удалил хелпы по Дельфи (лишние файлы стирал), а инсталлятора пока нет. Большая просьба прислать на мэйл: juster.seth@mail.ru Спасибо!


Anatoly Podgoretsky   (2003-02-14 12:29:00) [22]

К этому просто нечего добавить!
Пройди этим путем и с непоянтками сюда.


pasha676   (2003-02-14 11:56:00) [23]

Функции API я знаю хреново (даже хуже). Я лучше знаю как найти нужное в хэлпе.
Вызываю из дельфина хелп по Windows SDK. Набираю в поиске слово timer и (о чудо!!!) мне появляется About Multimedia Timer.
Потом пробую делать и если у меня что то не получается то читаю еще раз или задаю вопрос на форуме.


Juster~   (2003-02-13 19:08:00) [24]

Спасибо за дельные советы.
-> Pasha676: Ты, наверное, ф-ции API хорошо знаешь, а я вот не очень. Поэтому просьба поподробнее, как организовать свой таймер
-> All: А как это дело реализовано в серьезных проектах, кто-нибудь знает?


pasha676   (2003-02-13 11:54:00) [25]

Извиняюсь описался. В смысле описАлся :). Не так написал вообщем.


Anatoly Podgoretsky   (2003-02-13 10:41:00) [26]

Я еще не совсем Подгорел :-)
Это из стандартных системных, вероятно и в DirectX есть что нибудь специализированное.


pasha676   (2003-02-13 10:39:00) [27]

2Darthman ( используя API)

2Darthman
Нафига такой гемор. Он и по быстродействию будет хуже и в исполнении далеко не самый удачный вариант.

Juster
Имхо - слушай Подгорельского. Организуй свой таймер (используя API). Это достаточно просто.


Darthman   (2003-02-13 04:53:00) [28]

2Juster:
Делаешь (например, как самый простой вариант) таймер, с интервалом 1. Неважно, сколько он выдаст, суть не в этом.
Объявляешь глобальные переменные:
ThisTickCount, LastTickCount, ElapsedTime : DWORD;

При старте приложения:
ThisTickCount:=GetTickCount();

В обработчике таймера:
LastTickCount:=ThisTickCount;
ThisTickCount:=GettickCount();
ElapsedTime:=ThisTickCount-LastTickCount;

Вот в переменной ElapsedTime будет точное время в мсек. с последней проверки. Делаешь из этого нужные коэффициенты и вперед.


Anatoly Podgoretsky   (2003-02-12 19:58:00) [29]

В справке Multimedia Timer Functions


Juster~   (2003-02-12 19:43:00) [30]

->Anatoly Podgoretsky: если не сложно, скажи где найти его можно
->Darthman: про GetTickCount я знаю, но чем он поможет? И насчет тиков процессора поподробнее, пожалуйста


Anatoly Podgoretsky   (2003-02-12 14:15:00) [31]

Есть же мультимедиа таймер, срабатывание до 1 мс, если система позволит.


Darthman   (2003-02-12 14:07:00) [32]

А не проще привязаться к тикам процессора, или на худой конец к GetTickGout() ?


A_n_t   (2003-02-12 11:08:00) [33]

Канэчно!

коэффициент = 90/FPS
при 90 FPS будет равен 1
при 45 FPS будет равен 2
То есть при понижении FPS будет увеличиваться коэффициент, что и требовалось!

P.S. Единственная проблема: при резких перепадах FPS будут скачки.


Juster~   (2003-02-11 20:03:00) [34]

А может просто использовать коэффициент при расчетах движения, который зависит от времени прошедшем между итерациями цикла?


pasha676   (2003-02-11 18:55:00) [35]

Простейший способ - цикл прорисовки идет по таймеру в 1/25 сек.
Это есссесно не гарантирует все как по атомным часам. Но во многом поможет.


Ketmar   (2003-02-11 18:28:00) [36]

с часам сложно. придётся свой драйвер делать, часы искать. опять же Windows -- не RealTime OS.

Satanas Nobiscum! 11-Feb-XXXVIII A.S.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо