善用 MIP 映射的優點
Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本
「MIP 映射」(MIP Map,亦稱為「Mipmap」) 是與紋理有關的一組點陣圖,可提高執行階段的顯示品質和效能。MIP 映射中的每個點陣圖影像是主要點陣圖影像的版本,但不如主要影像細緻。
例如,您的 MIP 映射包含最高品質、64 × 64 像素的主要影像。MIP 映射中較低品質的影像為 32 × 32、16 × 16、8 × 8、4 × 4、2 × 2 和 1 × 1 像素。
「紋理串流」是一種功能,可優先載入最低品質的點陣圖,然後以漸進方式一邊載入點陣圖一邊顯示較高品質的點陣圖。由於較低品質的點陣圖較小,所以載入的速度比主要影像來得快。因此,應用程式使用者可以在主要、高品質點陣圖載入之前,先在應用程式中檢視影像。
Flash Player 9.115.0 和更新版本以及 AIR 都會為每個點陣圖建立各種縮放 (從 50% 開始) 的最佳化版本,以實作這項技術 (此一實作程序稱為「MIP 映射」)。
Flash Player 11.3 和 AIR 3.3 支援透過
Context3D.createCubeTexture()
及
Context3D.createTexture()
方法的
streamingLevels
參數進行紋理串流。
紋理壓縮可讓您以壓縮格式直接將紋理影像儲存在 GPU 上,以便節省 GPU 記憶體和記憶體頻寬。一般來說,壓縮的紋理是以壓縮格式離線壓縮後上傳到 GPU 的。然而,Flash Player 11.4 和 AIR 3.4 支援執行階段紋理壓縮,在特定情況下,例如從向量圖像顯示動態紋理時,此壓縮會很有用。若要使用執行階段紋理壓縮,請執行下列步驟:
-
呼叫
Context3D.createTexture()
方法、以第三個參數傳遞
flash.display3D.Context3DTextureFormat.COMPRESSED
或
flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA
,藉此建立紋理物件。
-
使用
createTexture()
所傳回的
flash.display3D.textures.Texture
實體,呼叫
flash.display3D.textures.Texture.uploadFromBitmapData()
或
flash.display3D.textures.Texture.uploadFromByteArray()
。這些方法會一次上傳並壓縮紋理。
會針對下列類型的點陣圖影像建立 MIP 對應:
-
使用 ActionScript 3.0 Loader 類別顯示的點陣圖 (JPEG、GIF 或 PNG 檔案)
-
Flash Professional 文件的文件庫中的點陣圖
-
BitmapData 物件
-
使用 ActionScript 2.0
loadMovie()
函數顯示的點陣圖
MIP 映射不會套用至濾鏡的物件或已快取點陣圖的影片片段。不過,如果濾鏡的顯示物件中有點陣圖變形,那麼即使點陣圖位於被遮蔽的內容中,還是可以套用 MIP 映射。
MIP 映射會自動建立,但是您也可以根據下列幾項原則,確保影像能充分利用此最佳化的優點:
-
針對視訊播放,將 Video 物件的
smoothing
屬性設定為
true
(請參閱 Video 類別)。
-
針對點陣圖,
smoothing
屬性則不需要設定為
true
,但是當點陣圖使用平滑化功能時,品質的改善效果較為明顯。
-
對於二維影像,使用可被 4 或 8 除盡的點陣圖大小 (例如 640 x 128,可以縮小為 320 x 64 > 160 x 32 > 80 x 16 > 40 x 8 > 20 x 4 > 10 x 2 > 5 x 1)。
對於三維紋理,請使用每個影像的解析度為 2 的倍數 (即 2^n) 的 MIP 映射。例如,主要影像的解析度為 1024 x 1024 像素。然後,MIP 映射中較低品質的影像會是 512 x 512、256 x 256、128 x 128 像素,降到 MIP 映射中 11 個影像共 1 x 1 像素。
請注意,若點陣圖內容的高度或寬度是奇數,則不會進行 MIP 映射。
|
|
|