在使用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);
|