Utnyttja mipmapping

Flash Player 9 och senare, Adobe AIR 1.0 och senare

MIP-mappar (som också kallas för mipmappar ) är bitmappar som grupperas tillsammans och kopplas till en textur för att öka återgivningskvaliteten och prestandan under körning. Varje bitmappsbild i MIP-mappen är en version av den huvudsakliga bitmappsbilden, men innehåller inte lika många detaljer.

Du kan till exempel ha en mipmapp som omfattar en huvudbild på 64 x 64 pixlar vid högsta kvalitet. Bilder med lägre kvalitet i mipmappen är då 32 × 32, 16 × 16, 8 × 8, 4 × 4, 2 × 2 och 1 × 1 pixlar.

Texturuppspelning är möjligheten att läsa in den bitmapp som har lägst kvalitet först och sedan stegvis visa bitmappar med högre kvalitet efterhand som bitmapparna läses in. Eftersom bitmappar med lägre kvalitet är små, läses de in snabbare än huvudbilden. Därför kan programanvändarna visa bilden i ett program innan den huvudsakliga bilden med hög kvalitet har lästs in.

Flash Player 9.115.0. och senare versioner och AIR implementerar den här tekniken (processen kallas för mipmapping ) genom att skapa optimerade versioner i olika skalor av respektive bitmapp (med början vid 50 %).

Flash Player 11.3 och AIR 3.3 har stöd för texturuppspelning via parametern streamingLevels i metoderna Context3D.createCubeTexture() och Context3D.createTexture() .

Med texturkomprimering kan du lagra komprimerade texturbilder direkt på GPU:n, vilket kräver mindre GPU-minne och minnesbandbredd. Komprimerade texturer komprimeras normalt offline och överförs till GPU:n i komprimerat format. Flash Player 11.4 och AIR 3.4 har dock stöd för texturkomprimering under körning vilket är användbart i vissa situationer, t.ex. vid återgivning av dynamiska texturer från vektorgrafik. Gör så här för att använda texturkomprimering under körning:

  • Skapa texturobjektet genom att anropa metoden Context3D.createTexture() , och skicka antingen flash.display3D.Context3DTextureFormat.COMPRESSED eller flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA i den tredje parametern.

  • Använd den flash.display3D.textures.Texture -instans som returneras av createTexture() och anropa antingen flash.display3D.textures.Texture.uploadFromBitmapData() eller flash.display3D.textures.Texture.uploadFromByteArray() . Dessa metoder överför och komprimerar texturen på samma gång.

MIP-mappar skapas för följande bitmapptyper:

  • en bitmapp (JPEG-, GIF- eller PNG-filer) som visas med klassen Loader i ActionScript 3.0

  • en bitmapp i biblioteket för ett Flash Professional-dokument

  • ett BitmapData-objekt

  • en bitmapp som visas med funktionen loadMovie() i ActionScript 2.0

MIP-mappar används inte på filtrerade objekt eller bitmappscachelagrade filmklipp. MIP-mappar används emellertid om du har bitmappsomformningar i ett filtrerat visningsobjekt, även om bitmappen finns i maskat innehåll.

Mipmapping sker automatiskt, men det finns några riktlinjer som du kan följa om du vill vara säker på att bilderna utnyttjar den här optimeringen:

  • Ange egenskapen smoothing till true för Video-objektet vid videouppspelning (se klassen Video).

  • För bitmappar behöver egenskapen smoothing inte anges till true , men kvalitetsförbättringarna blir mer påtagliga när bitmappar använder utjämning.

  • Använd bitmappsstorlekar som är delbara med 4 eller 8 för tvådimensionella bilder (t.ex. 640 x 128, som kan förminskas enligt följande: 320 x 64 > 160 x 32 > 80 x 16 > 40 x 8 > 20 x 4 > 10 x 2 > 5 x 1).

    För tredimensionella texturer använder du MIP-mappar där varje bild har en upplösning som är en tvåpotens (d.v.s. 2^n). Anta att huvudbilden har upplösningen 1 024 x 1 024 pixlar. Bilderna med lägre kvalitet i MIP-mappen blir då 512 x 512, 256 x 256, 128 x 128 ned till 1 x 1 pixlar för sammanlagt 11 bilder i MIP-mappen.

    Tänk på att mipmapping inte utförs för bitmappsinnehåll med udda höjd eller bredd.