Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.05.2010, 17:35
inferrum вне форума Посмотреть профиль Отправить личное сообщение для inferrum Найти все сообщения от inferrum
  № 1  
Ответить с цитированием
inferrum

Регистрация: Jun 2007
Сообщений: 83
По умолчанию Фильтры и быстродействие.

Всем привет.Задача следующая.
Имеется спрайт в который каждый фрейм рисуются линии.
Каждый раз меняется их длина и местоположение.
После этого к спрайту(то бишь ко всем отрисованным линиям) применяется фильтр Glow, что приводит к капитальным тормозам.
Я вот подумал может можно как-то оптимизировать этот процесс или добиться того же результата другими способами без использования фильтра?

Старый 25.05.2010, 17:44
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Ну да
Можно разделить линию на составляющие 2-х типов: середина и конец
Далее, можно нарисовать середину (кусочек линии с "уже примененным" GlowFilter) - то есть BitmapData в которую скопирован внешний вид середины
То же повторить для конца линии
Составить много-много линий из полученных кусочков (graphics.beginBitmapFill())
__________________
...вселенская грусть

Старый 25.05.2010, 18:57
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
дорисовывать каждую новую линию в спрайт и тут же отрисовывать его в прозрачную битмапдату? чую что проблема в куче линий, а не в фильтре.
__________________
Поймай яблоко 2!

Старый 25.05.2010, 19:04
inferrum вне форума Посмотреть профиль Отправить личное сообщение для inferrum Найти все сообщения от inferrum
  № 4  
Ответить с цитированием
inferrum

Регистрация: Jun 2007
Сообщений: 83
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Ну да
Можно разделить линию на составляющие 2-х типов: середина и конец
Далее, можно нарисовать середину (кусочек линии с "уже примененным" GlowFilter) - то есть BitmapData в которую скопирован внешний вид середины
То же повторить для конца линии
Составить много-много линий из полученных кусочков (graphics.beginBitmapFill())
Идею понял, а вот как это реализовать понимаю не до конца.
Хорошо бы немного кода...

Цитата:
Сообщение от Zebestov
чую что проблема в куче линий, а не в фильтре.
Без фильтра всё работает быстро.
Цитата:
Сообщение от Zebestov
дорисовывать каждую новую линию в спрайт и тут же отрисовывать его в прозрачную битмапдату?
И что это даст?

Старый 26.05.2010, 10:17
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 5  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
Цитата:
Идею понял, а вот как это реализовать понимаю не до конца.
Хорошо бы немного кода...
Вам дали направление. Учитесь копировать часть клипа в bitmapData. Изучите graphics.beginBitmapFill()

Старый 26.05.2010, 11:25
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 6  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Метод gloomyBrain действительно быстрый (ещё бы и в битмапу рисовать), но, например, пересечение линий будет рисовать некорректно - свечение одной линии перекроет другую.
Я бы попробовал примерно как советует Zebestov. Т.е. рисуем линию в спрайт, спрайт "рисуем в битмапу" к которой применён фильтр, чистим спрайт.
Без фильтра работает быстро возможно т.к. установка фильтра включает cacheAsBitmap. С включенным cacheAsBitmap при изменении спрайта тормозной векторный рендерер перерисовывает всю кучу линий во внутреннюю битмапу. Т.е. возможно тормозит не столько из-за фильтра, сколько из-за cacheAsBitmap=true у спрайта. Ну и там не забыть качество фильтру поменьше. А вообще хоть бы код тормозящий кинули на поковырять)

Старый 26.05.2010, 16:08
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 7  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от -De- Посмотреть сообщение
С включенным cacheAsBitmap при изменении спрайта тормозной векторный рендерер перерисовывает всю кучу линий во внутреннюю битмапу.
очень правдоподобно. автор — попробовал как я говорил? тут дело в том, что не я это придумал — этот популярная тактика в подобных случаях.
__________________
Поймай яблоко 2!

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.