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

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

Тормознутость при использовании DelphiX [Delphi]


HPR ©   (2004-04-09 22:16:00) 

Многие жалуются, что игра, сделанная мной, очень затормаживает комп (загружает процессор). Я использую DelphiX. И таймер егошний. Он же OnIdle вроде юзает, тогда почему загруженность такая? Как Вы решаете эту проблему?


smb   (2004-04-15 16:03:00) [1]

>а что если регулировать частоту обновлениякаждого спрайта?
имеется ввиду "рисования"? если да, то получится
1) что нарисуется несколько раз объект поверх фона, и будет шлейф.
2)нарисуется фон, все объекты, очистка, на черном экране нарисуются объекты - короче фон будет мелькать  "раз 15-20 в секунду"
есть вариант, только рисовать rect фона, на котором были объекты. но думаю, что если делать на чистом DX, а не на DelphiX, то рисование фона на фпс не так сильно скажется, зато вычисления будут лишними.


HPR   (2004-04-15 13:48:00) [2]

Да нет, один у меня DXTimer. Просто наверное тормоза из-за фоновой картинки. Из-за нее ФПС круто упал. Кстати, а никто не задумывался над такой штукой - а что если регулировать частоту обновления каждого спрайта? Ведь частое обновление нужно только для быстродвижущихся объектов, а для статичных и вовсе раз 15-20 в секунду хватит.


V@LER@N   (2004-04-14 14:02:00) [3]

Может, потому что ты два ДХТаймера засандалил? Я тоже над этим долго думал...


Мараканец   (2004-04-14 13:07:00) [4]

ваще ничего, просто не запускается!


HPR   (2004-04-13 21:53:00) [5]

А что говорит? Или молча не запускается?


Мараканец   (2004-04-12 21:31:00) [6]

что-то ваее детище не запускается... я даже ума не приложу почему


HPR   (2004-04-11 11:48:00) [7]

Притормаживает сама игра или остальные проги во время игры?


TButton   (2004-04-11 04:14:00) [8]

я тоже жалуюсь. наверное притормаживает из-за объема выводимой графики.


smb   (2004-04-10 22:11:00) [9]

http://smb.hotmail.ru/mir/dx.exe
качай тут. запакован 7zip'ом - SFX. весит около 0.871 мб. если даже не очень хотеть будешь, то разберешься ;), уж хорошо все объясняется. игру скачал, щас смотрю.


miek   (2004-04-10 08:48:00) [10]

2HBR: Код очень простой.

uses mmsyster;
...

mmtimerevent:= timesetevent( mmtimerinterval, mmtimerresolution, timefunc, 0, time_periodic);

Где-то должна быть функция timefunc, которая станет вызываться через период mmtimerinterval.

Подробнее в MSDN или хелпе по WinAPI.


HPR   (2004-04-09 23:16:00) [11]

вот, кстати, эта игрушка:

ftp://ftp.ware.ru/win/5012Aqua_battle.exe

вобщем-то ничего особенного, т.к. это моя первая игра :)


HPR   (2004-04-09 23:13:00) [12]

smb, выкладывай! Может разберусь

miek, а поподробнее про системный мультимедий таймер можно? Код там..


smb   (2004-04-09 22:41:00) [13]

вообще лучшее решение этой проблемы - DirectX, not DelphiX. для 2д графики - поверь, это НЕ трудно, по-крайней мере там нет ничего очень трудного. а потом отказ от VCL, перевод на C++, 3d... ;)
>параллельном потоке - это сложнее, но гибче
когда-то, я еще только начал на Delphi писать, я попытался реализовать потоки. получилось как-то не очень быстро, и при этом наблюдались реальные скачки фпс. может я тогда криво сделал.
2 HPR
хочешь, я выложу мануал по DX, по которому учился. около 1.2 мб. от начала и до полного безВЦЛья. подробный разбор, примеры. есть один минус - там имена файлов такие, что хрен найдешь, от какой статьи какой пример.


miek   (2004-04-09 22:27:00) [14]

OnIdle там криво реализовано. А Мы решаем проблему, используя системный мультимедийный таймер. Некоторые просто отрисовывают в параллельном потоке - это сложнее, но гибче.


Наверх

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