![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тормознутость при использовании 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 там криво реализовано. А Мы решаем проблему, используя системный мультимедийный таймер. Некоторые просто отрисовывают в параллельном потоке - это сложнее, но гибче.