OpenGL-紋理壓縮

紋理壓縮(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_2DGL_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壓縮格式如下:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容