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.