2012年12月3日 星期一

淺談OpenGL ES 貼圖壓縮 (2012/12/03)

OpenGL ES 是由 khronos 所維護、定義的免授權費、跨平台的 3D Graphics API,與 OpenGL 不同的是,OpenGL ES 主要是針對嵌入式系統(embedded system)的環境,例如手機、PDA等裝置;而近年來網頁上的多媒體技術越來越複雜、多樣化,也漸漸地需要用到 3D Graphics 的硬體加速,所以也出現了基於 OpenGL ES 2.0 而發展、直接在網頁上做 3D 顯示的 WebGL。

[圖片來源] http://www.khronos.org/opengles



目前,貼圖壓縮於手持裝置上的應用受限於:

  • Texture寬高是否為二的次方
    Texture支援NPOT有助於美術設計產出Resource與轉換成貼圖壓縮。
  • 貼圖壓縮格式Alpha支援與否
    Alpha支援為必需,UI設計上大多會使用有Alpha的Texture。
  • 失真嚴不嚴重
    在漸層的表現上失真不能太明顯。
  • 貼圖壓縮格式是標準還是extension
    以Device相容性兒言,ETC1/ETC2比較會被採用。

考量以上四點,只有Opengl ES 3.0的標準ETC2較不受限,現今主流Device都是Opengl ES 2.0,無法全面的使用貼圖壓縮,目前只能針對特定平台特定Device去做貼圖壓縮優化。

Opengl ES 2.0的標準ETC1相較於各家的extension在Alpha Channel支援上顯得薄弱,如要支援Alpha須變相使用2張Texture。


特定平台或Device:
IOS使用貼圖壓縮extension PVRTC,Android支援Opengl ES 2.0的Device使用ETC1。

多平台Device:
Resource處理流程或處理工具來產生各平台最適合的貼圖壓縮格式。

[文章撰寫:Shawn]

0 意見:

張貼留言