OpengGL ES 紋理過(guò)濾模式-glTexParameteri

Android中GLES20.glTexParameteri函數(shù)表示對(duì)紋理的設(shè)置,函數(shù)結(jié)構(gòu)如下:

public static native void glTexParameteri(
        int target,
        int pname,
        int param
    );

參數(shù)說(shuō)明如下:

  • target: 活動(dòng)紋理單元的目標(biāo)紋理,GLES20.GL_TEXTURE_2D表示2D紋理,還有其他紋理,比如GLES11Ext.GL_TEXTURE_EXTERNAL_OES,這是Android特有的OES紋理,預(yù)覽相機(jī)或者視頻使用此紋理。
  • pname:紋理參數(shù)的標(biāo)記名,可以設(shè)置的值如下:GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_WRAP_S 或 GL_TEXTURE_WRAP_T。
  • param:設(shè)置的值。

GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T

紋理的坐標(biāo)系統(tǒng)叫做ST坐標(biāo)系統(tǒng),和xy坐標(biāo)系統(tǒng)一樣,s對(duì)應(yīng)x,t對(duì)應(yīng)y,因此GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T表示超出范圍的紋理處理方式,可以設(shè)置的值如下:GL_CLAMP_TO_EDGE、GL_REPEAT、GL_MIRRORED_REPEAT。

將紋理的坐標(biāo)值設(shè)置超出界限,紋理坐標(biāo)如下:

var texBuffer = GLTools.array2Buffer(
            floatArrayOf(
                0.0f, 0.0f,
                0.0f, 1.0f,
                2.0f, 1.0f,
                2.0f, 0.0f
            )
        )
  • GL_CLAMP_TO_EDGE:采樣紋理邊緣,即剩余部分顯示紋理臨近的邊緣顏色值。
    效果如下:


    image

    后面的部分使用紋理的最后像素的顏色值。

  • GL_REPEAT:重復(fù)紋理。效果如下:


    image
  • GL_MIRRORED_REPEAT:鏡像重復(fù),效果如下:


    image

    GL_TEXTURE_WRAP_T和GL_TEXTURE_WRAP_S一樣,T代表y軸。

GL_TEXTURE_MIN_FILTER和GL_TEXTURE_MAG_FILTER

當(dāng)紋理的大小和渲染屏幕的大小不一致時(shí)會(huì)出現(xiàn)兩種情況:

  • 第一種情況:紋理大于渲染屏幕,將會(huì)有一部分像素?zé)o法映射到屏幕上,對(duì)應(yīng)于GL_TEXTURE_MIN_FILTER。
  • 第二種情況:紋理小于渲染屏幕,沒(méi)有足夠的像素映射到屏幕上,GL_TEXTURE_MAG_FILTER。

可以設(shè)置GL_NEAREST 和 GL_LINEAR。

  • GL_NEAREST:使用紋理中坐標(biāo)最接近的一個(gè)像素的顏色作為需要繪制的像素顏色。
  • GL_LINEAR:使用紋理中坐標(biāo)最接近的若干個(gè)顏色,通過(guò)加權(quán)平均算法得到需要繪制的像素顏色,與GL_NEAREST比較速度較慢。

視覺(jué)效果如下圖:


image

左面的圖為GL_LINEAR的效果,是放大模糊的效果。右面的圖是GL_NEAREST的效果,鋸齒比較明顯,但沒(méi)有模糊。

\color{#c64935}{更多相關(guān)內(nèi)容}

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

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

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