Filter und dynamisches Entladen von Bitmaps

Vermeiden Sie Filter, auch solche, die über Pixel Bender verarbeitet werden.

Verwenden Sie möglichst wenig Effekte wie Filter, darunter auch Filter, die auf Mobilgeräten über Pixel Bender verarbeitet werden. Wenn ein Filter auf ein Anzeigeobjekt angewendet wird, erstellt die Laufzeitumgebung zwei Bitmaps im Arbeitsspeicher. Diese Bitmaps haben jeweils die Größe des Anzeigeobjekts. Die erste Bitmap wird als gerasterte Version des Anzeigeobjekts erstellt, die wiederum zur Erstellung der zweiten Bitmap mit angewendetem Filter verwendet wird:

Grafik in Originalgröße anzeigen
Zwei Bitmaps im Arbeitsspeicher bei angewendetem Filter

Wenn eine Filtereigenschaft geändert wird, werden beide Bitmaps im Arbeitsspeicher aktualisiert, um die resultierende Bitmap zu erstellen. Dieser Prozess erfordert einige CPU-Ressourcen und die beiden Bitmaps können relativ viel Arbeitsspeicher belegen.

In Flash Player 10.1 und AIR 2.5 wird ein neues Filterverhalten auf allen Plattformen eingeführt. Wenn der Filter nicht innerhalb von 30 Sekunden geändert wird oder wenn er ausgeblendet oder offscreen ist, wird der Arbeitsspeicher, der von der nicht gefilterten Bitmap belegt wird, freigegeben.

Dadurch wird die erforderliche Arbeitsspeichermenge für einen Filter auf allen Plattformen halbiert. Nehmen wir als Beispiel ein Textobjekt, auf das ein Weichzeichnungsfilter angewendet wurde. Der Text dient in diesem Fall nur zu Dekorationszwecken und wird nicht geändert. Nach 30 Sekunden wird der Arbeitsspeicher, der vom nicht gefilterten Bild belegt wird, freigegeben. Dasselbe passiert, wenn der Text 30 Sekunden lang ausgeblendet oder offscreen ist. Wenn eine Filtereigenschaft geändert wird, wird die nicht gefilterte Bitmap im Arbeitsspeicher neu erstellt. Dieses Funktionsmerkmal wird dynamisches Entladen von Bitmaps genannt. Doch selbst bei Verwendung dieser Optimierungsverfahren sollten Sie Filter nur spärlich einsetzen, da sie bei einer Änderung eine hohe CPU- oder GPU-Verarbeitungsleistung erfordern.

Verwenden Sie vorzugsweise Bitmaps, die mit einem Authoring-Tool wie Adobe® Photoshop® erstellt wurden, um Filter zu emulieren. Verwenden Sie nach Möglichkeit keine dynamischen Bitmaps, die zur Laufzeit in ActionScript erstellt werden. Bei Verwendung von extern erstellten Bitmaps kann die Laufzeitumgebung die CPU- oder GPU-Belastung deutlich reduzieren, besonders wenn die Filtereigenschaften sich im Zeitverlauf nicht ändern. Erstellen Sie alle für eine Bitmap erforderlichen Effekte in einem Authoring-Tool, soweit möglich. Sie können die Bitmap dann in der Laufzeitumgebung anzeigen, ohne dass Verarbeitung dafür erforderlich ist, der Vorgang also deutlich beschleunigt werden kann.