AS3 / Флэш-производительность таблиц спрайтов / Starling

В настоящее время я пытаюсь оптимизировать веб-приложение (браузер) AS3 / Flash (FP11 +). Это полнофункциональное флеш-приложение с окном браузера, которое загружает окружение / фоновую графику удаленно через SWFLoader (Greensock) и добавляет их в виде растровых изображений (время загрузки не вызывает проблем). Другая второстепенная графика, такая как кнопки, анимация обработки / загрузки, окна и элементы пользовательского интерфейса, отрисовывается с использованием графического API AS3.

Я сталкиваюсь с проблемами FPS (цель - 40) при загрузке дополнительных SWF-файлов для отображения внутри флэш-приложения (FPS сильно меняется, когда загруженные SWF-файлы анимируются и падают до нуля). Среднее использование МБ составляет от 50 до 100 МБ (по данным FlashProfiler).

Мой вопрос: приведет ли реализация использования локальной таблицы спрайтов для удаленно загруженной графики и / или нарисованной графики к значительному повышению производительности?

Во-вторых, поскольку Starling использует графический процессор для обработки и анимации, приведет ли преобразование приложения для использования Starling к значительному увеличению производительности?

Или я зациклился на максимальном увеличении производительности циклов, списков / векторов и использования данных? Что касается этого, я читал смешанные мнения об использовании массивов / списков против векторов, а также foreach против функций, специфичных для коллекции (фильтр, карта и т. Д.). Также будет полезен любой опыт прямого сравнения этих методов.

Спасибо!


person kfblake    schedule 15.12.2012    source источник
comment
Не могли бы вы предоставить нам ссылку для просмотра приложения? Кроме этого, у меня нет опыта использования листов спрайтов в приложениях Flash Player (я предполагаю, что вы имеете в виду изображения, в которых отдельные кадры расположены рядом друг с другом в пределах одного изображения, что сводит анимацию к перемещению окна на каждый такой графический кадр). Фреймворк, управляемый графическим процессором, такой как Starling, может обрабатывать тысячи объектов, не беспокоясь, так что это может помочь. Вы должны сначала обратить внимание на свои циклы и шаблоны использования данных - в основном, сначала профилируйте и соответствующим образом повторно проанализируйте его.   -  person amn    schedule 15.12.2012
comment
@amn: Да, то, что вы описали, я тоже считаю спрайт-листом. Они активно используются разработчиками игр. Я не думаю, что ссылка поможет описать это больше, чем я уже сделал, но в следующие 24–48 часов эта ссылка будет активной: ссылка. См. Отредактировано для дополнительных циклов повторного запроса и т. Д.   -  person kfblake    schedule 16.12.2012


Ответы (1)


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

Таким образом, большое количество изображений плюс значительное количество поворотов или масштабирования позволят эффективно использовать сильные стороны графического процессора. Если вы постоянно перерисовываете такие вещи, как векторная графика или другие операции с типами холста, Starling, вероятно, не сильно поможет. Это также не поможет на компьютерах с неподдерживаемыми графическими процессорами.

После того, как вы примете решение о выборе растрового изображения или рендеринга, любую оптимизацию реального кода AS3 следует проводить с помощью профилировщика.

person Scott A    schedule 03.01.2013