Wykorzystywanie zalet mipmappingu

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Mapy MIP (określane również jako mipmapy ) są bitmapami zgrupowanymi i skojarzonymi z teksturą w celu zwiększenia jakości i wydajności renderowania w czasie wykonywania. Każdy obraz bitmapowy w mipmapie jest wersją głównego obrazu bitmapowego o zmniejszonym poziomie szczegółów.

Załóżmy na przykład, że mipmapa zawiera obraz główny o najwyższej jakości w wymiarach 64 x 64 pikseli. W takiej sytuacji obrazy mipmapy o niższej jakości mają następujące wymiary w pikselach: 32 × 32, 16 × 16, 8 × 8, 4 × 4, 2 × 2, 1 × 1.

Przesyłanie strumieniowe tekstur polega na początkowym wczytaniu bitmapy o najniższej jakości, a następnie — w miarę wczytywania — wyświetlaniu bitmap o coraz wyższej jakości. Bitmapy o niższej jakości są mniejsze, dzięki czemu są wczytywane szybciej niż obraz główny. W ten sposób użytkownicy aplikacji mogą obejrzeć obraz, zanim zostanie wczytana bitmapa główna o wysokiej jakości.

W programie Flash Player 9.115.0 i w nowszych wersjach oraz w środowisku AIR zaimplementowano tę technikę (proces określany jako mipmapping ) w taki sposób, że zoptymalizowane wersje każdej bitmapy są tworzone w różnych skalach (począwszy od skali 50%).

Program Flash Player 11.3 i środowisko AIR 3.3 obsługują przesyłanie strumieniowe tekstur za pośrednictwem parametru streamingLevels metod Context3D.createCubeTexture() i Context3D.createTexture() .

Kompresja tekstur umożliwia przechowywanie obrazów tekstur bezpośrednio w GPU, co zapewnia oszczędność pamięci i redukuje wymaganą przepustowości pamięci. Zazwyczaj tekstury są kompresowane offline i wysyłane do GPU w formacie skompresowanym. Program Flash Player 11.4 i środowisko AIR 3.4 obsługują jednak kompresję tekstur podczas wykonywania, co jest przydatne w pewnych sytuacjach, takich jak renderowanie tekstur dynamicznych z grafiki wektorowej. Aby użyć kompresji w czasie wykonywania, wykonaj następujące czynności:

  • Utwórz obiekt tekstury przez wywołanie metody Context3D.createTexture() , przekazując jako trzeci parametr wartość flash.display3D.Context3DTextureFormat.COMPRESSED lub flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA .

  • Za pomoc wystąpienia klasy flash.display3D.textures.Texture zwróconego przez metodę createTexture() wywołaj metodę flash.display3D.textures.Texture.uploadFromBitmapData() lub flash.display3D.textures.Texture.uploadFromByteArray() . Metody te pozwalają na przekazanie i kompresję tekstury w jednym kroku.

Mapy MIP są tworzone dla następujących typów bitmap:

  • bitmap (plików JPEG, GIF lub PNG) wyświetlanych przy użyciu klasy Loader języka ActionScript 3.0;

  • bitmap w bibliotece dokumentu programu Flash Professional;

  • obiektów BitmapData;

  • bitmap wyświetlanych za pomocą funkcji loadMovie() języka ActionScript 2.0.

Mapy MIP nie są stosowane do filtrowania obiektów ani klipów filmowych zapisanych w pamięci podręcznej jako bitmapy. Z drugiej strony mapy MIP są stosowane, jeśli w filtrowanym obiekcie wyświetlania znajdują się przekształcenia bitmap, nawet jeśli bitmapa należy do treści zasłoniętej.

Mipmapping odbywa się automatycznie, niemniej postępowanie zgodnie z niektórymi wytycznymi pozwala upewnić się, że obrazy zostaną zoptymalizowane pod tym kątem:

  • W przypadku odtwarzania wideo należy ustawić właściwość smoothing na wartość true dla obiektu Video (patrz klasa Video).

  • W przypadku bitmap właściwości smoothing nie trzeba ustawiać na wartość true , wszelkie zmiany na lepsze w jakości są jednak znacznie bardziej widoczne, jeśli bitmapy są wygładzane.

  • W przypadku obrazów dwuwymiarowych należy korzystać z bitmap o wymiarach podzielnych przez 4 lub 8 (na przykład 640 x 128, gdzie jest dostępna redukcja: 320 x 64 > 160 x 32 > 80 x 16 > 40 x 8 > 20 x 4 > 10 x > 5 x 1).

    W przypadku tekstur trójwymiarowych należy stosować mipmapy, w których każdy wymiar jest potęgą liczby (2^n). Załóżmy na przykład, że obraz główny ma wymiary 1024 x 1024 pikseli. Taka mipmapa zawiera 11 obrazów o niższej jakości i następujących wymiarach w pikselach: 512 x 512, 256 x 256, 128 x 128, ..., 1 x 1.

    Mipmapy nie są tworzone dla zawartości bitmapowej o nieparzystej szerokości lub wysokości.