Разница в производительности между рисованием простой формы или сложного мувиклипа в bitmapData - PullRequest
0 голосов
/ 19 марта 2012

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

Мое приложение должно перерисовать все панели и элементы в bitmapData для выполнения какого-либо элемента управления bitmapData.hitTest (мы работаем с таблицей мультитач, панели можно перетаскивать, но следует избегать перекрытия).

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

Это нормально?Я думал, что процесс рисования экранного объекта внутри bitmapData с точки зрения производительности был связан с размером клипа, а не с его содержимым.

РЕДАКТИРОВАТЬ: я уже исправил это с обходным путем (в основном рисование чего-токак ограничивающая рамка объекта панели), но мне все равно интересно:)

1 Ответ

0 голосов
/ 20 марта 2012

Производительность будет частично продиктована содержимым экранного объекта.В зависимости от количества и сложности привлекаемых детей это может значительно варьироваться.Возьмем, к примеру, что вы можете нарисовать 10 000 (произвольно большое количество) спрайтов размером 1 на 1 пиксель (произвольно небольшое число), расположенных друг над другом.Каждый спрайт может содержать в своем коде рисования тонны произвольных векторных команд (moveTo, lineTo и т. Д.) Для рисования, даже вне видимой области, эти команды рисования будут выполняться независимо от области рисования при вызове методов рисования (если не указано иное).код не позволяет им вызываться для определенных ограничений).Я не верю, что вы должны увидеть существенную разницу в отображении экранных объектов в объект BitmapData по сравнению с отображением их на экране (единственное отличие, о котором я могу подумать, это запись в пространство RAM / heap, тогда как при ускорении GPU это может происходить внутривместо этого использовать видеопамять).

Я полагаю, что на сам хит-тест не повлияет количество дочерних элементов, поскольку в этот момент вы просто смотрите на пиксели A против пикселей B, поэтомуВы говорите, зависит только от площади пикселей в A и B.

Из любопытства, какую сенсорную поверхность вы используете и на какой платформе она работает (Android?).Я предположил бы, что с хорошим процессором, таким как Tegra 2 или 3 (или каким-либо другим многоядерным и / или GPU-ускоренным чипсетом), это не приведет к такому снижению производительности, что будет заметно (хотя я могу ошибаться)).Я немного работал над шутером сверху вниз и недавно переключился с использования упрощенного метода проверки попаданий, который я написал с помощью ограничивающих рамок, на метод проверки попаданий BitmapData, тестируя его локально, что, похоже, не влияет отрицательно на производительность, ноУ меня пока нет кабеля для тестирования на устройстве, поэтому я не уверен, что это повлияет на производительность при работе на устройстве.

...