Maskinvaruacceleration

Du kan använda OpenGL ES 1.1-maskinvaruacceleration om du vill förbättra grafiska prestanda i vissa program. För spel och andra program med animerade visningsobjekt kan maskinvaruacceleration vara en fördel. För program som använder maskinvaruacceleration avlastas processorn från den grafiska bearbetningen som i stället utförs av grafikprocessorn i iPhone-enheten, vilket kan förbättra prestandan betydligt.

När du utformar ett program för att använda grafikprocessorn är det viktigt att du följer regler som garanterar att innehållet accelereras effektivt.

Om du vill använda maskinvaruacceleration ska du ställa in Återgivning till GPU på fliken Allmänt i dialogrutan iPhone-inställningar i Flash Professional CS5. Du kan i programbeskrivningsfilen också ange att egenskapen renderMode ska vara gpu .

<initialWindow> 
    <renderMode>gpu</renderMode> 
    ...

Se även Ställa in iPhone-programegenskaper i Flash Professional CS5 och Ställa in iPhone-programegenskaper i programbeskrivningsfilen .

Det finns fyra klasser med visningsobjekt som kan återges snabbt med maskinvaruacceleration om deras innehåll ändras sällan:

  • Bitmappsobjekt

  • 2D-visningsobjekt vars cacheAsBitmap -egenskap är inställd på true och som kan ha egenskapen cacheAsBitmapMatrix angiven (se nedan)

  • 3D-visningsobjekt (d.v.s. objekt som har egenskapen z angiven)

  • Visningsobjekt som har en heltäckande fyllning och har kanter som är justerade mot pixlarna på skärmen.

Vektorbaserade objekt återges när en annan sprite animeras över eller under dem. Detta innebär att även andra objekt i bak- eller förgrunden till en animering ska tillhöra en av dessa kategorier.

För visningsobjekt där cacheAsBitmap är true , kommer en inställning av cacheAsBitmapMatrix att medföra att grafikprocessorn kommer att använda bitmappen som är ett resultat av omformningsmatrisen. I grafikprocessorn används bitmappsrepresentationen även om objektet roteras eller skalförändras. Grafikprocessorn kan sammanställa och animera den här bitmappen snabbare än vad processorn kan rita om ett vektoråtergivet objekt.

Om du bara anger cacheAsBitmap som true medför det att visningsobjektet (och eventuella underordnade objekt) cachas. Visningsobjektet ritas inte om när nya områden visas eller hela den kombinerade bilden översätts.

När ett visningsobjekts cacheAsBitmapMatrix -egenskap är inställd, kan en representation av visningsobjektet skapas i programmet även om objektet inte visas. I programmet skapas en cache-lagrad representation av visningsobjektet när nästa bildruta startas. När du sedan lägger till visningsobjektet på scenen kommer det att återges snabbt i programmet. Dessutom kan objektet snabbt animeras, roteras och skalförändras i programmet. För objekt som roteras eller skalförändras ska du inte ställa in egenskapen cacheAsBitmap utan att samtidigt ställa in egenskapen cacheAsBitmapMatrix .

Programmet kan även utföra alfaomformningar snabbt på ett objekt som cachas som en bitmapp. Det är emellertid bara alpha -värden mellan 0 och 1,0 som stöds för maskinvaruaccelererade alfaomformningar. Det motsvarar en inställning på mellan 0 och 256 för colorTransform.alphaMultiplier .

Ange inte egenskapen cacheAsBitmap som true för objekt som uppdateras ofta, till exempel textfält.

Visningsobjekt vars bildinnehåll ändras ofta passar oftast dåligt för grafikprocessoråtergivning. Detta gäller särskilt äldre enheter med mindre kraftfulla grafikprocessorer. Eftersom det krävs avsevärd processorkapacitet för att överföra grafiken till grafikprocessorn kan CPU-återgivning vara ett bättre val.

Strukturera om visningsobjekt som innehåller underordnade visningsobjekt, som rör sig i förhållande till det överordnade objektet. Ändra dem så att de underordnade visningsobjekten blir jämställda med de överordnade. På så sätt får vart och ett av dem en egen bitmapprepresentation. Varje visningsobjekt kan dessutom röra sig i förhållande till de andra, utan att nya bilder måste överföras till grafikprocessorn.

Ställ in true för egenskapen cacheAsBitmap på den högsta nivån i visningslistan där underordnade visningsobjekt inte animeras. Med andra ord, ange den för visningsobjektbehållare som inte innehåller några rörliga delar. Ange den inte för de underordnade visningsobjekten. Gör det inte för ett sprite som innehåller andra visningsobjekt som animeras.

När du ställer in z -egenskapen för ett visningsobjekt, kommer en cache-lagrad bitmappsrepresentation alltid att användas i programmet. Dessutom kommer, sedan du ställt in z -egenskapen för ett visningsobjekt, programmet att använda den cache-lagrade bitmappsrepresentationen även om du roterar eller skalförändrar objektet. I programmet används inte egenskapen cacheAsBitmapMatrix för visningsobjekt med en inställd z -egenskap. Samma regler kommer att gälla när du ställer in tredimensionella egenskaper för visningsobjekt, inklusive egenskaperna rotationX , rotationY , rotationZ och transform.matrix3D .

Ställ inte in egenskaperna scrollRect eller mask för en visningsobjektsbehållare som har innehåll som du vill använda för maskinvaruacceleration. När du ställer in dessa egenskaper inaktiveras maskinvaruacceleration för visningsobjektsbehållaren och dess underordnade objekt. Ett alternativ till att ange egenskapen mask är att skapa ett lager med ett maskvisningsobjekt ovanpå det visningsobjekt som ska maskeras.

Det finns gränser för storleken på de visningsobjekt som är tillgängliga för maskinvaruacceleration. På äldre enheter är gränsen högst 1 024 pixlar för både bredd och höjd. På nyare enheter är gränsen högst 2 048 pixlar. Du kan använda diagnostikverktyget för grafikprocessoråtergivning för att testa prestanda på en enhet.

Grafikprocessorn kan även använda RAM-minnet i iPhone för att lagra bitmappsbilder. Då används minst den mängd minne som behövs för bitmappsbilderna.

Minnesallokeringen för grafikprocessorn är potenser av två för varje dimension av bitmappsbilden. Grafikprocessorn kan till exempel reservera minne i storlekarna 512 x 1024 eller 8 x 32. Detta innebär att en bild på 9 x 15 pixlar tar lika mycket minne i anspråk som en bild på 16 x 16 pixlar. För cachade visningsobjekt kan du använda dimensioner som ligger närmre potenser av två (men inte mer) för varje riktning. Det är till exempel mer effektivt att använda ett visningsobjekt som är 32 x 16 pixlar än ett som är 33 x 17 pixlar.

Förlita dig inte på en storleksförändrad scen för att förminska resurser som har storleksanpassats för andra plattformar (till exempel datorn). Du ska i stället använda egenskapen cacheAsBitmapMatrix eller ändra storlek på resursen innan den publiceras för iPhone. 3D-objekt ignoreras i egenskapen cacheAsBitmapMatrix när en ytbild cache-lagras. Det är av den anledningen bättre att ändra storleken på visningsobjekt före publiceringen om de ska återges på en 3D-yta.

Det finns anledning att vara observant när det gäller maskinvaruacceleration och RAM-användning. Medan minnet fylls upp kommer operativsystemet i iPhone att frigöra minne från andra iPhone-program som körs. När bearbetningen pågår i dessa program och minne frigörs, kan en tävlan med ditt program om CPU-resurser äga rum. Detta kan tillfälligt minska prestandan i ditt program. Du bör därför testa dina program på äldre enheter eftersom de har betydligt mindre tillgängligt minne för den process som körs.

När du felsöker ett program på iPhone kan du aktivera diagnostikfunktionen för grafikprocessoråtergivning. Med den här funktionen kan du enklare se hur programmet använder grafikprocessoråtergivning. Mer information finns i ”Felsöka med hjälp av diagnostikfunktionen för grafikprocessoråtergivning” i Felsöka ett iPhone-program .

Mer information om hur du använder egenskapen cacheAsBitmapMatrix finns i avsnittet "DisplayObject.cacheAsBitmapMatrix” i ActionScript-API:er för AIR-program för mobilenheter .