紋理壓縮(Texture compression)是一種專為在三維計(jì)算機(jī)圖形渲染系統(tǒng)中存儲紋理而使用的圖像壓縮技術(shù)。與普通圖像壓縮算法的不同之處在于,紋理壓縮算法為紋素的隨機(jī)存取做了優(yōu)化。
通用壓縮紋理格式

判斷壓縮與選擇壓縮方式
//判斷紋理是否被成功壓縮
GLint comFlag;
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_COMPRESSED,&comFlag);
//根據(jù)選擇的壓縮紋理格式,
//選擇最快、最優(yōu)、?行選擇的算法?式選擇壓縮格式。
glHint(GL_TEXTURE_COMPRESSION_HINT,GL_FASTEST);
glHint(GL_TEXTURE_COMPRESSION_HINT,GL_NICEST);
glHint(GL_TEXTURE_COMPRESSION_HINT,GL_DONT_CARE);
加載壓縮紋理
void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalFormat,GLsizei width,GLint border,GLsizei imageSize,void *data);
void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalFormat,GLsizei width,GLint heigth,GLint border,GLsizei imageSize,void *data);
void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalFormat,GLsizei width,GLsizei heigth,GLsizei depth,GLint border,GLsizei imageSize,void *data);
參數(shù)說明:
-
target:
GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D。 - Level:指定所加載的mip貼圖層次。?一般我們都把這個參數(shù)設(shè)置為0。 internalformat:每個紋理理單元中存儲多少顏?色成分。
-
width、height、depth參數(shù):指加載紋理理的寬度、?高度、深度。==注意!==這些值必須是2的整數(shù)次?方。(這是因?yàn)镺
舊版本上的遺留留下的?一個要求。當(dāng)然現(xiàn)在已經(jīng)可以?支持不不是2的整數(shù)次?方。但是開發(fā)者們還是習(xí)慣使?用以2的整數(shù)次?方去
參數(shù)。) - border參數(shù):允許為紋理理貼圖指定?一個邊界寬度。
format、type、data參數(shù):與我們在講glDrawPixels函數(shù)對應(yīng)的參數(shù)相同
glGetTexLevelParameter函數(shù)提取的壓縮紋理格式如下:

GL_EXT_texture_compression_s3tc壓縮格式如下:
