Renderowanie przy użyciu GPU w aplikacjach AIR dla urządzeń przenośnych

W celu włączenia sprzętowego przyspieszania grafiki w aplikacji AIR należy dołączyć do deskryptora tej aplikacji parametr <renderMode>gpu</renderMode> . Nie można zmieniać trybów renderowania w czasie wykonywania. Na komputerach stacjonarnych ustawienie renderMode jest ignorowane. Obecnie na komputerach nie jest obsługiwane przyspieszanie grafiki przy użyciu GPU.

Ograniczenia trybu renderowania GPU

W przypadku używania trybu renderowania GPU w środowisku AIR 2.5 występują następujące ograniczenia:

  • Jeśli GPU nie może renderować obiektu, obiekt w ogóle nie jest wyświetlany. Nie jest dostępna rezerwowa opcja renderowania przy użyciu procesora.

  • Nie są obsługiwane tryby mieszania: layer, alpha, erase, overlay, hardlight, lighten, darken.

  • Filtry nie są obsługiwane.

  • Nie jest obsługiwana wtyczka PixelBender.

  • W przypadku wielu jednostek GPU maksymalny rozmiar tekstury wynosi 1024 x 1024. W skryptach ActionScript przekłada się to na maksymalny ostateczny rozmiar renderowanego obiektu wyświetlanego po wszystkich przekształceniach.

  • Firma Adobe nie zaleca używania trybu renderowania GPU w aplikacjach AIR odtwarzających materiały wideo.

  • W trybie renderowania GPU pola tekstowe czasami nie są przenoszone w widoczne miejsca po otwarciu klawiatury wirtualnej. Aby mieć pewność, że pole tekstowe będzie widoczne, gdy użytkownik będzie wprowadzać tekst, należy wykonać jedną z następujących czynności: Umieść pole tekstowe w górnej połowie ekranu lub przenieś je do tej połowy, gdy stanie się aktywne.

  • Tryb renderowania GPU jest wyłączony dla niektórych urządzeń, na których nie działa on stabilnie. Najnowsze informacje na ten temat można uzyskać w przeznaczonych dla programistów uwagach na temat wersji środowiska AIR.

Sprawdzone procedury dotyczące trybu renderowania GPU

Stosując się do następujących wskazówek, można uzyskać wydajniejsze renderowanie przy użyciu GPU:

  • Należy ograniczyć liczbę elementów widocznych na stole montażowym. Renderowanie każdego elementu oraz komponowanie go z innymi elementami zajmuje pewien czas. Gdy obiekt wyświetlany ma przestać być widoczny, należy ustawić dla jego właściwości visible wartość false . Nie należy przenosić obiektu poza stół montażowy, ukrywać go za innym obiektem ani zmieniać jego właściwości alpha na 0. Jeśli obiekt wyświetlany nie będzie już w ogóle potrzebny, należy usunąć go ze stołu montażowego przy użyciu metody removeChild() .

  • Zamiast tworzyć i niszczyć obiekty, należy używać obiektów wielokrotnie.

  • Należy tworzyć bitmapy o wymiarach zbliżonych do 2 n na 2 m bitów, ale mniejszych. Wymiary nie muszą być dokładnie potęgami liczby 2, ale powinny być do nich zbliżone i nie powinny być od nich większe. Na przykład obraz o wymiarach 31 na 15 pikseli jest renderowany szybciej niż obraz o wymiarach 33 na 17 pikseli. (31 i 15 to o jeden mniej niż potęgi liczby 2: 32 i 16).

  • W miarę możliwości należy, wywołując metodę Graphic.beginBitmapFill() , ustawić wartość false dla parametru repeat.

  • Nie należy wymuszać zbyt wielu operacji rysowania. Jako tła należy używać koloru tła. Nie należy układać dużych kształtów warstwami — jeden na drugim. Narysowanie każdego piksela wymaga bowiem wykonania pewnych operacji.

  • Należy unikać kształtów o długich, cienkich końcach, krawędzi przecinających się i wielu drobnych detali wzdłuż krawędzi. Renderowanie takich kształtów zajmuje znacznie więcej czasu niż wyświetlanie obiektów o równych krawędziach.

  • Należy ograniczać rozmiary obiektów wyświetlanych.

  • Dla obiektów wyświetlanych z rzadko zmienianą grafiką należy włączyć opcje cacheAsBitMap oraz cacheAsBitmapMatrix.

  • Należy unikać interfejsu API rysowania ActionScript (klasy Graphics) jako mechanizmu tworzenia grafiki. Gdy jest to możliwe, należy zamiast tego tworzyć obiekty statycznie — podczas opracowywania zawartości.

  • Zasoby bitmapowe należy przeskalować do rozmiarów docelowych przed zaimportowaniem.

Tryb renderowania GPU w środowisku AIR 2.0.3 dla urządzeń przenośnych

Renderowanie GPU podlega większym ograniczeniom w przypadku aplikacji AIR dla urządzeń przenośnych, które utworzono za pomocą narzędzia Packager for iPhone. Przydatność GPU jest ograniczona tylko do bitmap, kształtów wypełnionych i obiektów wyświetlanych z ustawioną właściwością cacheAsBitmap . Ponadto w przypadku obiektów, dla których ustawiono właściwości cacheAsBitmap i cacheAsBitmapMatrix , GPU może wydajnie renderować obiekty podlegające obracaniu i zmianom skali. Przetwarzanie pozostałych obiektów wyświetlanych również jest wykonywane przez GPU, co zazwyczaj skutkuje niską wydajnością renderowania.