Filtry i dynamiczne usuwanie bitmapy

Należy ograniczyć korzystanie z filtrów, w tym również filtrów przetwarzanych przez moduł Pixel Bender.

Należy w miarę możliwości do minimum ograniczać korzystanie z efektów, takich jak filtry, w tym filtrów przetwarzanych na urządzeniach mobilnych przez mechanizm Pixel Bender. Gdy filtr zostanie zastosowany do obiektu wyświetlanego, środowisko wykonawcze utworzy dwie bitmapy w pamięci. Każda z tych bitmap ma wielkość obiektu wyświetlanego. Pierwsza jest tworzona jako rasteryzowana wersja obiektu wyświetlanego, a następnie jest wykorzystywana w celu utworzenia drugiej bitmapy z zastosowanym filtrem:

Powiększ obraz
Dwie bitmapy w pamięci po zastosowaniu filtru

W przypadku zmodyfikowania właściwości filtru obydwie bitmapy są aktualizowane w pamięci w celu utworzenia bitmapy wynikowej. Ten proces wymaga wykorzystania procesora, a obydwie bitmapy mogą zajmować znaczącą ilość miejsca w pamięci.

W programie Flash Player 10.1 i środowisku AIR 2.5 wprowadzono nowe zachowanie filtrowania dla wszystkich platform. Jeśli filtr nie zostanie zmodyfikowany w ciągu 30 sekund, lub jeśli jest ukryty albo niewidoczny na ekranie, wówczas pamięć zajęta przez niefiltrowaną bitmapę jest zwalniana.

Takie działanie zmniejsza wykorzystanie pamięci przez filtr o połowę na wszystkich platformach. Na przykład: rozważmy obiekt tekstowy z zastosowanym filtrem rozmycia. Tekst w tym przypadku stanowi tylko prostą ozdobę i nie jest modyfikowany. Po 30 sekundach niefiltrowana bitmapa w pamięci jest zwalniana. To samo stanie się, jeśli tekst będzie ukryty przez 30 sekund lub nie będzie widoczny na ekranie. Jeśli jedna z właściwości filtru zostanie zmodyfikowana, niefiltrowana bitmapa w pamięci zostanie odtworzona. Ta funkcja jest nazywana dynamicznym usuwaniem bitmapy. Mimo tych optymalizacji należy zachować ostrożność podczas stosowania filtrów; modyfikacje filtrów nadal wymagają intensywnego użycia procesora CPU lub procesora graficznego GPU.

Sprawdzoną metodą jest używanie bitmap utworzonych za pomocą narzędzia do tworzenia treści, takiego jak Adobe® Photoshop®, w celu emulowania filtrów, gdy tylko jest to możliwe. Należy unikać stosowania dynamicznych bitmap utworzonych w środowisku wykonawczym w kodzie ActionScript. Dzięki zastosowaniu bitmap utworzonych na zewnątrz środowisko wykonawcze może ograniczyć obciążenie procesora lub GPU, szczególnie w przypadkach, gdy w miarę upływu czasu właściwości filtra nie są zmieniane. W razie możliwości w narzędziu do tworzenia zawartości należy przygotować wszystkie efekty wymagane na bitmapie. Następnie bitmapę można wyświetlić w środowisku wykonawczym bez żadnego przetwarzania, co może znacznie skrócić czas wykonywania operacji w programie.