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

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

Почему не получается использовать два таймера? [D6, Win95/98]


Карлсон ©   (2002-07-11 22:40:00) 

Подскажите плиз, почему в DelphiX не получается использовать два DXTimer"а одновременно?
Если на одном осуществлять вывод графики, а другой будет просто активен с заданным интервалом, то все в порядке.
Если же повесить какое-нить событие на дополнительный таймер, то вся сцена пропадает.
в чем дело?
неужели нельзя использовать второй DXTimer просто как обычный Timer из VCL ?


msts   (2002-07-13 17:56:00) [1]

PS: Собственно теперь мне понятно почему (в свое время) существенно падали FPSы когда обработку движения я выносил из дхтаймера в другой вцлтаймер (забивалась очередь сообщений - в результате "OnIdle" наступало реже) хотя в обычном режиме при адекватной загрузки процессора другим приложением оставались прежними


msts   (2002-07-13 17:45:00) [2]

я теорию не знаю, хотя практика использования DirectX под Delphi была по этому могу сказать умозрительно - дхтаймер только так называется и в своей основе не имеет ничего общего (кроме названия) с обычным таймером, представь схему работы дх -
основной поток обработки данных - сгенерить буфер - вывести на экран - снова сгенерить и т.д., есть окно (только одно) в котором отоброжается буфер, и все

теперь посмотрим исходники:

procedure TCustomDXTimer.Resume;
begin
FOldTime := TimeGetTime;
FOldTime2 := TimeGetTime;
Application.OnIdle := AppIdle;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
end;
Application.OnIdle - вызывается когда программа ожидает сообщений
AppIdle - собственно и есть DX OnTimer;
таким образом второй таймер накрывает процедуру первого

отсюда можно сделать вывод - что если программ чем то занята
- то и кадры не генерятся
что заметно если взять окно за каптион


Карлсон   (2002-07-13 13:12:00) [3]

обычный то я делаю, а вот все же почему нельзя???
ну очень меня этот вопрос интересует.


NailMan   (2002-07-13 03:26:00) [4]

Попробуй сделать обычный Timer последством WinAPI.
я их 5 штук запустил, и ни одного глюка.


Карлсон   (2002-07-12 23:38:00) [5]

Люди, ну отзовитесь же!!!!


Наверх

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