Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Максимальная производительность при рисовании (http://www.flasher.ru/forum/showthread.php?t=185841)

s3dworld 22.10.2012 17:08

Максимальная производительность при рисовании
 
Всем доброго дня!

Работаю в FlashDevelop и использую Flex SDK. Есть необходимость вывести огромное количество объектов на экране (скажем 1000-10000). Если использовать для этого дела MovieClip'ы или Sprite, то этим мы не добъёмся максимальной производительности. Я решил попробовать другой вариант. В качестве экрана использую Bitmap. А вывожу всё на его BitmapData (правда я сделал два BitmapData и переключался между ними - пародия на двойную буферизацию). В общем-то это оказалось заметно быстрее чем на Sprite'ах/MovieClip'ах. Но тут есть один недостаток: быстро если не использовать трансформации. Стоит только повернуть изображение, как производительность становится равная использование Sprite'ов/MovieClip'ов. Поэтому остаётся только не поворачивать изображения программным способом, а заранее подготовить повёрнутые картинки - геморройно, зато работает быстро.

Есть ли ещё какие-то способы добиться максимальной производительности? Например как включить аппаратное ускорение? Подскажите способы, как можно рисовать огромное количество изображений на экране.

Спасибо за внимание!

Hauts 22.10.2012 17:43

Starling вам как-раз то, что нужно.

Добавлено через 3 минуты
http://www.adobe.com/devnet/flashpla..._Starling.html

И вот еще перевод (надеюсь оплатят хостинг). Если что — ищите сохраненную копию в гугле.

s3dworld 22.10.2012 18:06

Hauts
Хорошо, спасибо! Это я почитаю. Но и этот движок сам-то как-то реализован. Что он использует? То есть как мне добиться самому максимальной производительности? Что использовать из функционала (без стороннего кода)?

Hauts 22.10.2012 18:09

s3dworld, используйте Starling для вашего проекта, по-моему, это самый лучший вариант. Но не самостоятельные попытки :)

gagaga 22.10.2012 18:10

setPixels, copyPixels ... быстрее только магия.... выложите код, возможно подскажу, где можно оптимизировать

Добавлено через 1 минуту
на GPU ускорение я бы надеяться не стал, оно работает не на всех платформах

Tails 22.10.2012 18:13

Hauts,
А можно узнать насчёт старлинга, блюры и бевалы будут работать на телефонах?

Hauts 22.10.2012 18:17

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

s3dworld 22.10.2012 18:23

Спасибо всем за ответы! Поэкспериментирую и если что, напишу ещё.

Vreden 22.10.2012 18:40

Присоединяюсь к вопросу автора. Я бы тоже почитал про самостоятельную оптимизацию большого количества экранных объектов, ибо у меня тоже есть десятки тысяч спрайтов, при этом приложение офисное и использовать игровой движок для этого как бы не тот случай. Может кто-нибудь имеет линки или информацию по этому случаю.

Tails 22.10.2012 18:52

Vreden,
Если объекты не двигаются внутри своего пространства (содержимое контейнера/мувиклипа) можно использовать кеширование. Прирост может быть ощутимым.
В Flas ide галочка - caching bitmap

zuxul 22.10.2012 19:14

Цитата:

Сообщение от Hauts (Сообщение 1100854)
Tails, насколько мне известно, старлинг не поддерживает фильтры именно для дисплэйобджектов старлинга. Но так как для клипов используются текстуры из битмапдат, то не составит большого труда накладывать фильтр на картинку, а ее, в свою очередь, использовать как текстуру.

Если скачать старлниг с гитхаба, то там уже некоторые фильты есть. Другое дело, что даже разработчик остерегает их использовать на мобильных устройствах.
http://forum.starling-framework.org/...eature-filters

Hauts 22.10.2012 19:23

s3dworld, вы, кстати, можете еще попробовать блокировать битмапдату, потом отрисовывать в нее все клипы, потом разблокировать.

Я про BitmapData.lock() и BitmapData.unlock()

Vreden, старлинг не игровой движок. А библиотека для удобной отрисовки с помощью видеокарты. Что вы будете показывать — игрушку или офисное приложение — исключительно ваше дело :)

Ах да... Если про вопрос с оптимизацией — там вначале статьи есть пример того, что вам нужно написать, чтобы вывести прямоугольник "самостоятельно" и со старлингом. Довольно показательно, как мне кажется.

expl 22.10.2012 19:23

Цитата:

правда я сделал два BitmapData и переключался между ними - пародия на двойную буферизацию
Для флеша это лишнее, хватило бы одной

gagaga 23.10.2012 00:48

в линуксовском плеере старлинг показывает производтельность сравнимую с самописными рендерерами

strangedk 23.10.2012 12:28

Очень полезно использовать sprite sheet, и хранить картинки в виде карты объектов.

http://esdot.ca/site/2012/fast-rende...d-spritesheets


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

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