Перейти к содержанию
Fire Monkey от А до Я
  • 0

Эффекты и странное поведение памяти.


ununununun

Вопрос

Есть некая анимация, на неё наложен эффект Glow + FloatAnimation, всё крутится в цикле, но через некоторое время начинает лагать.

Чем больше эффектов тем лаги приходят быстрее. Если один Glow, например, то динамика потребления довольно медленная, но плавно пилообразно поджирает ресурсы, и через пол часа уже начинаются лаги.

В чём проблема, господа?

post-1856-0-69762100-1449079221.png

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

в использовании эффектов, это же очевидно.

 

лучше покажите код, что происходит и где используется glow эффект?

Ссылка на комментарий
  • 0

Память на утечки проверяете при закрытии программы?

Помните, что в FMX анимации в цикле достаточно сильно нагружают процессор даже в том случае, если форма с анимацией в данный момент не показана (ой сколько я с этим эффектом намучился в свое время).

Ссылка на комментарий
  • 0

в использовании эффектов, это же очевидно.

 

лучше покажите код, что происходит и где используется glow эффект?

 

вот например так:

glowLb.Opacity:=RandomRange(10, 90 + 1) * 0.01;

получается эффект моргающей подсветки.

Ссылка на комментарий
  • 0

Память на утечки проверяете при закрытии программы?

Помните, что в FMX анимации в цикле достаточно сильно нагружают процессор даже в том случае, если форма с анимацией в данный момент не показана (ой сколько я с этим эффектом намучился в свое время).

92Vq4GC.png

 

Такое показывает.

Но, если смотреть на график потребления памяти, то даже после уничтожения { FreeAndNil(Form) } формы со всеми этими эффектами, память не высвобождается. 

 

Но я пока временно решил проблему тем, что вместо того, чтобы накладывать эффект на TLabel, я сделал такую же надпись в графич. редакторе и сделал 10 картинок с разным значением эффекта свечения, 

И эти картинки рандомно в цикле колбасят производя тот же эффект, что и с TGlowEffect в реальном времени, но сейчас лагов нет. Точнее они стали возникать не каждый раз при запуске программки. После того как поставил x64,  лагов совсем нет.

Изменено пользователем ununununun
Ссылка на комментарий
  • 0

Применение эффекта нужно делать в TThread.Synchronize(TThread.CurrentThread, ....)

(для каждой отрисовки "кадра")

Иначе они у Вас "накапливаться" будут.

Но я не стал бы их принять вообще в вашем случае (особенно Glow).

Ссылка на комментарий
  • 0

Применение эффекта нужно делать в TThread.Synchronize(TThread.CurrentThread, ....)

(для каждой отрисовки "кадра")

Иначе они у Вас "накапливаться" будут.

Но я не стал бы их принять вообще в вашем случае (особенно Glow).

post-1856-0-69762100-1449079221.png

 

посмотрите какой странный пилообразный график потребления памяти!

то есть, если сцену остановить в определённый момент времени, на спаде то память не расходуется.

а я использую omnithreadlibrary, где в TPathAnimation.OnProcess запускается CreateTask(Process,'Process').Run; Process() - это и есть процедура рисования эффектов.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...