1. 程式人生 > >各種移動GPU壓縮紋理的使用方法

各種移動GPU壓縮紋理的使用方法

)S3TC (S3 texture compression)

ETC1:
ETC1格式是OpenGL ES圖形標準的一部分,並且被所有的Android裝置所支援。
副檔名為: GL_OES_compressed_ETC1_RGB8_texture,不支援透明通道,所以僅能用於不透明紋理。
當載入壓縮紋理時,<internal format>引數支援如下格式:
    GL_ETC1_RGB8_OES(RGB,每個畫素0.5個位元組)

PVRTC:
支援的GPU為Imagination Technologies的PowerVR SGX系列。
OpenGL ES的副檔名為: GL_IMG_texture_compression_pvrtc。
當載入壓縮紋理時,<internal format>引數支援如下幾種格式:
    GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG (RGB,每個畫素0.5個位元組)
    GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG (RGB,每個畫素0.25個位元組)
    GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG (RGBA,每個畫素0.5個位元組)
    GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG (RGBA,每個畫素0.25個位元組)

ATITC:
支援的GPU為Qualcomm的Adreno系列。
支援的OpenGL ES副檔名為: GL_ATI_texture_compression_atitc。
當載入壓縮紋理時,<internal format>引數支援如下型別的紋理:
    GL_ATC_RGB_AMD (RGB,每個畫素0.5個位元組)
    GL_ATC_RGBA_EXPLICIT_ALPHA_AMD (RGBA,每個畫素1個位元組)
    GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD (RGBA,每個畫素1個位元組)

S3TC
也被稱為DXTC,在PC上廣泛被使用,但是在移動裝置上還是屬於新鮮事物。支援的GPU為NVIDIA Tegra系列。
OpenGL ES副檔名為:
GL_EXT_texture_compression_dxt1和GL_EXT_texture_compression_s3tc。
當載入壓縮紋理時,<internal format>的引數有如下幾種格式:
    GL_COMPRESSED_RGB_S3TC_DXT1 (RGB,每個畫素0.5個位元組)
    GL_COMPRESSED_RGBA_S3TC_DXT1 (RGBA,每個畫素0.5個位元組)
    GL_COMPRESSED_RGBA_S3TC_DXT3 (RGBA,每個畫素1個位元組)
    GL_COMPRESSED_RGBA_S3TC_DXT5 (RGBA,每個畫素1個位元組)

    由此可見,Mali系列GPU只支援ETC1格式的壓縮紋理,而且該紋理不支援透明通道,有一定侷限性。
    以上壓縮紋理格式每個畫素大小相對A8R8G8B8格式的比例,最高壓縮比是16:1,最低壓縮比是4:1,對於減小紋理的資料容量有明顯作用,相應在顯 存頻寬上也有明顯優勢,從而提高遊戲的執行效率(此特性沒有絕對數值,根據每個遊戲的用法和瓶頸點不同而有差別)。