硬體加速

您可以使用 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 應用程式屬性

有四種類別的顯示物件,如果內容不常變更,可在硬體加速下迅速顯示。

  • 點陣圖物件

  • cacheAsBitmap 屬性設為 true 以及選擇性設定其 cacheAsBitmapMatrix 屬性的 2D 顯示物件 (參閱下文)

  • 3D 顯示物件 (亦即,設定其 z 屬性)

  • 填滿單一實色的矩形,且其邊緣在畫面上以像素為單位對齊的顯示物件。

只要另一個 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」一節。