纹理过滤函数glTexParmeteri()详解

 

    图象从纹理图象空间映射到帧缓冲图象空间,映射需要重新构造纹理图像,这样就会造成应用到多边形上的图像失真,因此在使用纹理前,我们通常需要使用glTexParmeteri() 函数来确定如何把纹理象素映射成像素,对纹理进行过滤。

 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);

GL_TEXTURE_2D: 操作2D纹理

GL_TEXTURE_MAG_FILTER:指当纹理图象被使用到一个大于它的形状上时(纹理图象中的一个像素会被应用到实际绘制时的多个像素。例如一幅256*256的纹理图像应用到一个512*512的图形上),我们可以使用GL_NEAREST和GL_LINEAR,如果选择前者,那么最靠近像素中心的那个纹理单元将用于放大和缩小,这可能导致锯齿状的人工痕迹(有时会比较严重),如果选择后者,那么OpenGL就会对靠近像素中心的一块2×2的纹理单元去加权平均值,用于放大和缩小(如果是三维纹理,就是对一块2×2×2纹理单元加权取平均值,是一维纹理那它就对2个纹理单元取平均值)。GL_NEAREST所需计算量要少于GL_LINEAR,因此前者执行速度上会比后者快一些。从视觉效果上看,前者效果较差,在一些情况下锯齿现象明显,后者效果更为平滑,但如果纹理图像本身比较大时,则两者在视觉效果上就会比较接近。

 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);

GL_TEXTURE_MIN_FILTER:指当纹理图象被使用到一个小于或等于它的形状上时,可选择的设置有GL_NEAREST, GL_LINEAR,GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_NEAREST和GL_LINEAR_MIPMAP_LINEAR.其中后面四个暂时不需了解。前两项和GL_TEXTURE_MAG_FILTER中类似。

 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_CLAMP);

GL_TEXTURE_WRAP_T:指S方向上的贴图模式,GL_CLAMP: 将纹理坐标限制在0.0,1.0的范围之内.如果超出了会     将边缘拉伸填充。

    此函数最后一个参数也可为GL_REPEAT 表示如果超出了会重复填充。

 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_CLAMP);

GL_TEXTURE_WRAP_S:指T方向上的贴图模式,与前者一样。如果不指定参数,默认值为GL_REPEAT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值