Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Почему DelphiX притормаживает в ХР, а в 98 летает?   Найти похожие ветки 

 
Vudu   (2004-10-20 18:08) [0]

Я тут сделал небольшую 2Д стрелялку (в ХР), потом включил ее в 98 и в ней стала такая скорость что невозможно играть. Можно ли это какнибудь пофиксить?
(я использовал увеличение интервала таймера в ХР до границы неторможения)


 
miek   (2004-10-20 18:21) [1]

Игры надо делать FPS-независимыми, тогда не будет неприятных сюрпризов. Когда работаешь по таймеру, обязательно смотри, сколько времени прошло с момента последнего вызова.


 
Megabyte-ceercop ©   (2004-10-22 06:53) [2]

Если юзаешь таймер, и его интервал не стоит на нуле или единице а где нибудь на 30-50, то проверку FPS делать ненужно, таймер обеспечит синхронизацию на самых ьыстрых машинах, и не очень быстрых. Его частота не зависит от машины.


 
miek   (2004-10-22 08:16) [3]

Это ты серьезно? Ну-ну, блажен кто верует, а я уже накололся раз.


 
Vudu   (2004-10-22 14:51) [4]

Вот и я интервал у таймера увеличивал, но мне кажеться это несерьезно, потому что на разных виндах все равно заметна разница. А если сильно увеличивать то сильно "FPS" падает.


 
miek ©   (2004-10-22 19:41) [5]

Не в интервале дело. Ты должен измерять время от последнего вызова процедуры таймера и в соответствии с ним менять все параметры движений и взаимодействий. Например, прошло Х миллисекунд, двигаем героя на Y пикселей, а если прошло 2*Х мс, то уже двигаем на 2*Y. Это называется FPS-независимость. Доходчиво?


 
Vudu   (2004-10-22 22:54) [6]

Кажись дошло. Надо будет попробовать.


 
DonNikola   (2004-12-21 05:40) [7]

Крайне рекомендую использовать мультимедийный таймер.
У него разрешение до 1 миллисекунды, а у стандартного ~18, и если сидеть на стандартном, то fps выше 50 не будет, даже для простого PutPixel"я.
Смотри в MMSystem функции: timeBeginPeriod, timeSetEvent etc.


 
Ландграф Павел ©   (2004-12-21 07:28) [8]

По большому счету проблема кривого (созданого не для игр) ДХтаймера, ставь из ПоверДрава, или пиши сам [через пики=)]
А скоростя разные из-за дровов... ну и особенностей 2k виндов, и из-за вышеописанной проблемы


 
Sphinx   (2004-12-21 11:31) [9]

> У него разрешение до 1 миллисекунды, а у стандартного ~18,

Для 9х - дискретизация TTimer составляет 55 мс, для систем NT - 10 мс.


 
DonNikola   (2004-12-22 04:37) [10]

2Sphinx: Прошу прощения ошибся, но только в цифре, перепутал 18 и 55, но смысл тот же. Я на форму кинул два таймера, один 1ms, другой  1000ms, первый увеличивает счетчик, а второй его отображает и сбрасывает, результат 19-24, это если ничего вообще кроме таймеров не работает. На WinApi результат почти тот же, разве что нет такого разброса. А с мультимедийным таймером до 500 фреймов в секунду отрабатывает, опять же если никакой другой активности нет.
И, на мой взгляд рассчитывать на то что везде стоит NT лучше не стоит, можно напороться.


 
DonNikola   (2004-12-22 04:39) [11]

А 18 - это то максимальное количество FPS которое можно получить, если использовать стандартный таймер.


 
Sphinx   (2004-12-22 11:26) [12]

> DonNikola   (22.12.04 04:39) [11]

Сперва тоже, начитавшись умных книжек делал всё на основе таймера, но потом, не без помощи этого форума, забил на это.
Теперь делаю так: отрисовка непрерывно, а просчет сцены пытаюсь вынести в отдельный поток, где пересчитываю через некоторое число тиков. Пока получается плохо :) да и времени не очень много...работа...сессия :)


 
DonNikola   (2004-12-22 23:49) [13]

Потоки это конечно здорово, но мне кажется, что их использование для этих целей несколько излишне. Я сначала пробовал делать непрерывный вывод, но отказался, сообщения не успевают отрабатываться, другие программы тормозят. Лучше повесить процедуру на мультимедийный таймер, а в ней постить WM_TIMER в главное окно, а уже в обработчике WM_TIMER"а и делать отрисовку. Так оно больше на виндовое приложение похоже, а что больше похоже, то и работать стабильнее будет. Такой метод даже на 5x86 работает.



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.05 c
9-1103729660
-=SS=-
2004-12-22 18:34
2005.03.20
GlScene Тень


3-1108568740
juice
2005-02-16 18:45
2005.03.20
CREATE TABLE в хранимой процедуре


14-1109682820
Ирина
2005-03-01 16:13
2005.03.20
Знак радиации


1-1110130168
Checist [root]
2005-03-06 20:29
2005.03.20
TTreeView


14-1109292242
SkyRanger
2005-02-25 03:44
2005.03.20
RSS - функция