Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер перегружает процессор 
:(
    Опции темы
AlexSam
Дата 12.4.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 24.9.2005

Репутация: нет
Всего: нет



Пишу нечто вроде арканойда , короче , от таймера движется по форме шарик(timage) (каждые 10
милисекунд он смещается на 6 пикселов ) и движется от другого таймера каретка(timage) (каждые 20
милисекунд смещается на 8 пикселов).Все движется плавно и красиво, но если они движутся
одновременно , то начинае тормозить (по отдельности загрузка процессора 4-8 % , а вместе
90-95% smile ) .Почему так получается и как сделать нормальную производительность.
PM MAIL   Вверх
Albinos_x
Дата 12.4.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



почему бы не запихнуть в один таймер?


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Yanis
Дата 12.4.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



А причём здесь таймер? Ты сам процессор свой тормозишь своими методами рисования.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Sunvas
Дата 13.4.2006, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(AlexSam @ 12.4.2006, 22:18 Найти цитируемый пост)
Почему так получается и как сделать нормальную производительность.


Цитата(Yanis @ 12.4.2006, 22:41 Найти цитируемый пост)
Ты сам процессор свой тормозишь своими методами рисования.

Придется тогда все вынести в одельный поток и приоритет ему поставить tpidle..



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
~FoX~
Дата 13.4.2006, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(Sunvas @ 13.4.2006, 08:34 Найти цитируемый пост)
приоритет ему поставить tpidle..

вы что??? для арканоида приоритет повышать...???


AlexSam, Во первых откажись от объектов (TImage), рисуй прям на канве. Во вторых AlphaBlend формы поставь в true.
А вообще, если тормазит - значит математика не верна, код приведи - поправим smile


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Marlin
Дата 13.4.2006, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 20.2.2006

Репутация: нет
Всего: 1



AlexSam

Если хочешь создавать, что то нормальное пиши под DirectX.

У меня был такой же опыт, я писал игру средствами Delphi, потом немного почитал, как все это делается с библиотеками DirectX все это реализовывается намного лучше.
Добавлено @ 08:37
Ну а если, DirectX не подходит реализуй все свои прорисовки с помощью API функций.
Но мне кажеться мерцания и дергания в игрушке тебе будет избежать тяжко
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает.
PM MAIL   Вверх
Yanis
Дата 13.4.2006, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(~FoX~ @ 13.4.2006, 08:17 Найти цитируемый пост)
для арканоида приоритет повышать...???

smile


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
~FoX~
Дата 13.4.2006, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



[offtop]Yanis, повтарюсь, если гама тормазит значит проблемы в математике, а повышение приоритета для элиментарной гамы может повлеч за сосбой глюки всей системы...(не считая того что в общем ситуации оно не изменит)[/offtop]


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
RA
Дата 13.4.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Хз в чём дело но явно не втаймерах, а втом коде каторый под ними.

не раз уже это говорилось, но всёже повторю.
стандартные таймеры выдают минимальную задержку 50 ms. (хоть ты им ставь одну милесекунду)

PM   Вверх
AlexSam
Дата 13.4.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 24.9.2005

Репутация: нет
Всего: нет



Цитата

Хз в чём дело но явно не втаймерах, а втом коде каторый под ними.

Ну , код очень прост:
Код

///dx -колличество пикселов по горизонтали от шарика до некой точки назначения
///если dx<0 то движемся влево , усли dx> 0 то вправо т.как точка (0;0) находится в верхнем 
///левом углу поля.Аналогично с dy . tg=dx/dy и берется по модулю . image2- шарик. k=8 пикселов

...
var dx,dy,k:integer;
      tg:real;          
...
procedure TForm1.GoXTimer(Sender: TObject);
begin
if tg>1 then
  begin
     if dx>1 then image2.Left:=image2.Left+k else image2.Left:=image2.Left-k;
     if dy>1 then image2.top:=image2.top+ceil(k*(1/tg)) else image2.top:=image2.top-ceil(k*(1/tg));
  end
  else
  begin
     if dy>1 then image2.top:=image2.top+k else image2.top:=image2.top-k;
     if dx>1 then image2.Left:=image2.Left+ceil(k*tg) else image2.Left:=image2.Left-ceil(k*tg);
  end;
reflection();
end;

procedure tform1.reflection();
var xr,xl,yt,yd:integer;
begin
  xr:=image2.Left+image2.width;
  xl:=image2.Left;
  yt:=image2.top;
  yd:=image2.Top+image2.height;
if (image1.Top+image1.height<=yd ) or (image1.Top>=yt ) then dy:=-dy;
if (image1.Left>=xl) or (image1.Left+image1.width<=xr) then dx:=-dx;

end;


Цитата

стандартные таймеры выдают минимальную задержку 50 ms. (хоть ты им ставь одну милесекунду)

Как это- если у меня стоит интервал 10 ms и 50 ms то разница очень видна...
Может все-таки дело именно в image.
PM MAIL   Вверх
Wing
Дата 13.4.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 19.3.2006

Репутация: нет
Всего: нет



Цитата(AlexSam @ 13.4.2006, 16:37 Найти цитируемый пост)
Как это- если у меня стоит интервал 10 ms и 50 ms то разница очень видна...

Дело в том что старые процы просто слишком тормозят для такого маленького интервала.
PM MAIL ICQ   Вверх
AlexSam
Дата 13.4.2006, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 24.9.2005

Репутация: нет
Всего: нет



Albinos x был прав : обьеденил движения шарика и каретки в один таймер и тормоза исчезли ...
PM MAIL   Вверх
Демо
Дата 13.4.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(RAdmin @ 13.4.2006, 09:46 Найти цитируемый пост)
стандартные таймеры выдают минимальную задержку 50 ms.


На ОС до W98 - 50мсек, выше - 10мсек.


--------------------
    
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.