您可以使用 OpenGL ES 1.1 硬體加速來提昇部分應用程式的圖形效能。顯示動畫物件的遊戲和其他應用程式也都受益於硬體加速。使用硬體加速的應用程式可以從 CPU 卸載部分圖形程序給 iPhone GPU,如此可以大幅改善效能。
設計使用 GPU 的應用程式時,務必遵循相關規則,確保內容可由 GPU 有效加速。
若要使用硬體加速,請在 Flash Professional CS5「iPhone 設定」對話方塊中,將「一般」標籤的「顯示:」設定為「GPU」。您也可以在應用程式描述器檔案中,將
renderMode
屬性設定成
gpu
:
<initialWindow>
<renderMode>gpu</renderMode>
...
請參閱
在 Flash Professional CS5 中設定 iPhone 應用程式屬性
和
在應用程式描述器檔案中設定 iPhone 應用程式屬性
。
有四種類別的顯示物件,如果內容不常變更,可在硬體加速下迅速顯示。
只要另一個 Sprite 在向量物件的上方或下方製作動畫,向量物件就會重新顯示。因此,任何做為動畫背景或前景的物件也屬於這些類別。
對
cacheAsBitmap
設定成
true
的顯示物件而言,設定
cacheAsBitmapMatrix
會導致 GPU 使用矩陣變形所產生的點陣圖。即使旋轉或縮放物件,GPU 仍會使用點陣圖形式。GPU 複合並對此點陣圖製作動畫的速度,比 CPU 重新繪製向量顯示物件的速度快。
只將
cacheAsBitmap
設定為
true
,將會快取顯示物件 (及任何子系)。公開新區域或轉譯整個組合的圖形時,不會重新繪製顯示物件。
當設定顯示物件的
cacheAsBitmapMatrix
屬性時,應用程式便可建立顯示物件的形式,即使物件是隱藏的。應用程式會在下個影格開始時,建立顯示物件的快取形式。接著,當您將顯示物件新增至舞台時,應用程式便可快速顯示該物件。應用程式同時也可以快速地執行旋轉或縮放物件等動畫效果。對旋轉或縮放的物件設定
cacheAsBitmap
屬性時,請務必同時設定
cacheAsBitmapMatrix
屬性。
應用程式也能針對快取為點陣圖的物件,快速地執行 Alpha 色彩變形。不過,硬體加速的 Alpha 色彩變形僅支援 0 至 1.0 之間的
alpha
值。該範圍可對應至 0 至 256 之間的
colorTransform.alphaMultiplier
設定。
請勿將經常更新物件 (例如文字欄位) 的
cacheAsBitmap
屬性設定成
true
。
經常變更圖形內容的顯示物件,通常不適用於 GPU 顯示。針對 GPU 能力較弱的早期裝置更是如此。上傳圖形至 GPU 的額外負荷,使得 CPU 顯示成為較佳的選擇。
針對相對於父系移動的子顯示物件,重新建立包含這些物件的顯示物件。變更這些物件,讓子顯示物件成為父系的旁系。如此可確保這些物件每個都有各自的點陣圖形式。此外,每個顯示物件可以相對於其他物件移動,不需要上傳新圖形至 GPU。
在顯示清單的最高層級 (此處的子顯示物件不是動畫),將
cacheAsBitmap
屬性設定成
true
。換言之,針對不含移動組件的顯示物件容器設定此值。不要在子顯示物件上設定此值。當 Sprite 包含要製成動畫的其他顯示物件時,請不要在 Sprite 上設定此值。
設定顯示物件的
z
屬性時,應用程式一律會使用快取的點陣圖形式。在您設定顯示物件的
z
屬性後,即使您旋轉或縮放物件,應用程式還是會使用快取的點陣圖形式。對於已設定
z
屬性的顯示物件,應用程式不會使用
cacheAsBitmapMatrix
屬性。相同的規則也適用於設定任何 3D 顯示物件的屬性,這些屬性包括
rotationX
、
rotationY
、
rotationZ
以及
transform.matrix3D
屬性。
如果想在容器包含的內容中使用硬體加速,請勿設定顯示物件容器的
scrollRect
或
mask
屬性。因為設定這些屬性會停用顯示物件容器及其子物件的硬體加速。除了使用
mask
屬性外,您也可以在被遮蓋的顯示物件上放置遮色片顯示物件圖層。
使用硬體加速時,顯示物件的大小有所限制。在較舊的裝置上,長度與寬度不得超過 1024 個像素。在較新的裝置上,不得超過 2048 個像素。您可以使用 GPU 顯示診斷工具,測試裝置的效能。
GPU 也會使用 iPhone RAM 儲存點陣圖影像,而所使用的記憶體數量剛好是點陣圖影像所需的記憶體數量。
GPU 會針對點陣圖影像的每一個維度配置 2 乘方的記憶體。例如,GPU 可以保留 512 x 1024 或 8 x 32 大小的記憶體。因此,一個 9 x 15 像素的影像與 16 x 16 像素的影像所佔用的記憶體是相同的。針對快取的顯示物件,建議每個方向的維度接近 2 的乘方 (不可超過)。例如,使用 32 x 16 像素顯示物件遠比 33 x 17 像素顯示物件更有效率。
請勿藉由調整舞台的大小來縮小已根據其他平台 (例如桌上型電腦) 調整大小的資源。請使用
cacheAsBitmapMatrix
屬性,或於發佈至 iPhone 之前先調整資源的大小。快取表面影像時,3D 物件會忽略
cacheAsBitmapMatrix
屬性。基於這個理由,如果要在 3D 表面上呈現顯示物件,您最好可以在發佈之前先調整顯示物件的大小。
硬體加速的效果及 RAM 使用量是一種取捨關係。隨著記憶體空間漸漸不足,iPhone OS 會通知其他執行中的原生 iPhone 應用程式釋放記憶體。當這些應用程式處理這項通知並開始釋放記憶體時,這些應用程式便可能與您的應用程式競爭 CPU 循環。這樣會暫時降低應用程式的效能。請務必在較舊的裝置上測試應用程式,因為基本上舊裝置可提供給執行中程序使用的記憶體較少。
在 iPhone 上執行應用程式除錯時,可啟用 GPU 顯示診斷功能。此功能可協助您查看應用程式使用 GPU 顯示的情形。如需詳細資訊,請參閱
iPhone 應用程式除錯
中的「使用 GPU 顯示診斷來除錯」。
如需使用
cacheAsBitmapMatrix
屬性的詳細資訊,請參閱
行動 AIR 應用程式專屬的 ActionScript API
的「DisplayObject.cacheAsBitmapMatrix」一節。