OpenGL ES:紋理參數設置

        在使用OpenGL ES渲染視頻流時,需要將圖像以紋理的方式送入渲染,這個過程需要設置紋理的相關參數,包括紋理的拉伸方式和紋理的過濾方式。OpenGL ES設置紋理參數的函數是 glTexParameterx( x 可以是 i 或 f 等),函數原型是

void glTexParameteri(int target, int pname, int   param);
void glTexParameterf(int target, int pname, float param);

target: 目標紋理

GL_TEXTURE_1D
GL_TEXTURE_2D
GL_TEXTURE_3D
GL_TEXTURE_EXTERNAL_OES(Android特有的OES紋理, 預覽相機或者視頻使用)

pname: 紋理參數

GL_TEXTURE_MIN_FILTER    // 紋理大於渲染屏幕, 將會有一部分像素無法映射到屏幕上, 紋理要縮小
GL_TEXTURE_MAG_FILTER    // 紋理小於渲染屏幕, 沒有足夠的像素映射到屏幕上, 紋理要放大
GL_TEXTURE_WRAP_S        // 相當於紋理的x軸, 設置紋理x軸的延伸方式
GL_TEXTURE_WRAP_T        // 相當於紋理的y軸, 設置紋理y軸的延伸方式

param: 紋理參數值

GL_NEAREST               // 臨近插值
GL_LINAER                // 線性插值
GL_CLAMP_TO_EDGE         // 邊界像素延伸
GL_REPEAT                // 重複
GL_MIRRORED_REPEAT       // 鏡像重複

一些常用的設置方式

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章