在三维动态场景中,如果一个纹理对象迅速地远离观察点而去,此时纹理图像必须随被投影的图像一起缩小,否则很产生抖动或者闪烁的现象。为了避免产生抖动或者闪烁,OpenGL必须对纹理图像进行过滤,适当的对它进行缩小,是它在映射到无替代 表面时,不会产生令人不快的人工视觉效果。为了避免这种效果,我们可以指定一系列预先过滤的分辨率递减的问题图像,成为mipmap。mipmap使用了一些精巧的方法把图像数据挑选到内存中。
图象从纹理图象空间映射到帧缓冲图象空间(映射需要重新构造纹理图像,这样就会造成应用到多边形上的图像失真),这时就可用glTexParmeteri()函数来确定如何把纹理象素映射成像素.
部分参数功能说明如下:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
GL_TEXTURE_2D: 操作2D纹理.
GL_TEXTURE_WRAP_S: S方向上的贴图模式.
GL_CLAMP: 将纹理坐标限制在0.0,1.0的范围之内.如果超出了会如何呢.不会错误,只是会边缘拉伸填充.
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);这里同上,只是它是T方向
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);这是纹理过滤
GL_TEXTURE_MAG_FILTER: 放大过滤
GL_LINEAR: 线性过滤, 使用距离当前渲染像素中心最近的4个纹素加权平均值.
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
GL_TEXTURE_MIN_FILTER: 缩小过滤
GL_LINEAR_MIPMAP_NEAREST: 使用GL_NEAREST对最接近当前多边形的解析度的两个层级贴图进行采样,然后用这两个值进行线性插值.
纹理帖图会出现在物体表面的(u,v)位置上,这些值在[0.0,1.0]范围内。超出这个值域怎么去办呢,在OpenGL中用Texture Wrapping Mode来处理。
1 重复(GL_REPEAT):图象在表面上重复出现。忽略纹理坐标的整数部分,并将纹理图的拷贝粘贴在物体表面上,这样才能做到无缝连接。
 2. 截取(GL_CLAMP):将大于1.0的数值设置为1.0,将小于0.0的数值设置为0.0,即将超出[0.0,1.0]范围的数值截取到[0.0,1.0]范围内,这样会导致纹理边缘的重复。
3. 镜像重复(GL_MIRRORED_REPEAT_ARB):图象在物体表面上不断重复,但是每次重复的时候对图象进行镜像或者反转。这样在纹理边缘处比较连贯。
4. 边界截取(CLAMP_TO_BORDER_ARB):[0.0,1.0]范围外的参数值用单独定义的边界颜色或纹理边缘进行绘制。适合于绘制物体表面的贴花纸。CLAMP_TO_BORDER_ARB在所有mipmap层次上对纹理坐标进行截取,使nearest和linear过滤只返回边界纹理单元的颜色。
5. 边缘截取(GL_CLAMP_TO_EDGE):总是忽略边界。处于纹理边缘或者靠近纹理边缘的纹理单元都用作纹理计算,但是不包括边界上的纹理单元。
 在OpenGL1.2以前的版本中并未对最初的GL_CLAMP进行详细的说明。按照定义,在双线性插值过程中,在纹理边界以外的点是由纹理边缘像素和边界颜色各自一半混合形成的。在OpenGL1.2中,引入了GL_CLAMP_TO_EDGE,用来纠正这个问题。同时,GL_CLAMP_TO_BORDER_ARB则只对那些纹理边界上的边界点进行采样。因为很多硬件并不支持边界处理,所以实现GL_CLAMP_TP_EDGE和GL_CLAMP的效果好象是一样的。

OpenGL纹理过滤以及纹理Wrapping mode相关推荐

  1. OpenGL 纹理过滤和 mip 贴图

    一.概念 1. 纹理过滤 当纹理贴到具体像素上时,像素需要到纹理图像中进行采样,这个过程称为纹理过滤. 纹理过滤通常有两种情况:放大(GL_TEXTURE_MAG_FILTER)和缩小(GL_TEXT ...

  2. android纹理缓存,Android OpenGLES(七) 理解纹理与纹理过滤

    1.理解纹理 OpenGL中的纹理可以用来表示图像,照片,甚至由一个数学算法生成的分形数据.每个二维的纹理都由许多小的纹理元素组成,它们是小块的数据,类似于我们前面讨论过的片段和像素.要使用纹理,最常 ...

  3. C++ Opengl纹理过滤和光照实例源码

    C++ Opengl纹理过滤和光照实例源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8. ...

  4. OpenGL之纹理过滤(Texture Filtering)、MipMap方法、纹理坐标

    1.1 纹理过滤 像素.片元都是具有面积的,一个像素可能对应物体上的一小块区域,而物体上这个小区域对应于纹理图像上的一个小区域,因此一个像素的颜色可能来自于纹理中的一小个不规则区域,如果纹理的分辨率比 ...

  5. 初识OpenGL (-)纹理过滤(Texture Filtering)

    1. OpenGL需要知道怎样将纹理像素(Texture Pixel,也叫Texel)映射到纹理坐标. 纹理坐标 不依赖于分辨率(Resolution),它可以是任意浮点值, 给模型顶点设置的那个数组 ...

  6. OpenGL之纹理过滤的四种方式

    I.纹理过滤: 当三维空间里面的多边形经过坐标变换.投影.光栅化等过程,变成二维屏幕上的一组象素的时候,对每个象素需要到相应纹理图像中进行采样,这个过程就称为纹理过滤. II.纹理过滤通常分为2种情况 ...

  7. OpenGL学习十九:纹理过滤

    当物体放大缩小时导致投影在上面的纹理也随着变化,OpenGL为了 优化其细节使其效果更好,因此可以采用纹理过滤 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MA ...

  8. 手把手教会OpenGL之纹理贴图、包含纹理载入、纹理过滤、边界处理、纹理参数设置(入门级别案例,棋盘)

    一.OpenGL中纹理的加载(对glTexImage2D函数的使用) 二.纹理过滤(glTexParameteri参数中的GL_TEXTURE_MAG_FILTER与 GL_TEXTURE_MIN_F ...

  9. OpenGL(二十三) 各向异性纹理过滤

    如果使用一般的纹理过滤,当观察方向跟模型表面不是相互垂直的的情况下,会出现纹理信息的丢失,表现为图像看上去比较模糊,如下图所示,远处场景的细节信息很差: 针对这种情况,可以采用同向异性过滤的方式处理纹 ...

最新文章

  1. BCH升级新版本,实不相瞒该抄底了
  2. 修改android studio中的avd sdk路径、avd sdk找不到的解决方案
  3. 利物浦大学的office里面没有powerBI
  4. ICCV 2019 运行LCGN遇到的问题及解决办法
  5. 度量学习和pytorch-metric-learning的使用
  6. 特征权重量化 TF-IDF 用于信息检索和数据挖掘的加权技术
  7. Mac OS使用技巧之三:发射无线网络信号的方法
  8. 蓝桥杯 n进制小数
  9. java技术分享主题_Java开发入门:适合新手练手的Java项目(附源码下载)
  10. 解决:Could not find or load main class org.apache.rocketmq.example.quickstart.Producer
  11. NOI提高级:排序算法之归并排序、快速排序
  12. Mate 50年内无望!华为确认10月海外发布会主角是nova系列
  13. 坐标系旋转变换,内在旋转,外在旋转
  14. 判断一个数是否是素数
  15. SandStorm 出品|建设者高光时刻 9 月作品集已上线!
  16. 周志明:终于薅住了这位 “社恐”作者的小辫子
  17. php 身份证格式校验,年龄计算
  18. STL全特化 偏特化 成员特化
  19. linux 常用命令——MySql 5.7添加用户、删除用户与授权
  20. oracle 用户权限批量授予

热门文章

  1. 人无信则不立,您了解自己的信用情况吗?
  2. CSDN怎么改变字体颜色
  3. 我是怎样把工资从400-4000
  4. 读书百客:《送客之江西》赏析
  5. 管理电脑,让工作高效进行
  6. 北京理工大学计算机实验广域网通信与有,北京理工大学计算机实验七报告表.doc...
  7. 【现代通信原理笔记】8 蜂窝系统
  8. 编写Java脚本统计工程代码总行数
  9. 「滑板+EdgeBoard 竟能搭出AI质检流水线?」“软件杯”全国一等奖团队参赛心得...
  10. 跨境电商面临“寒冬”考验,如何转型升级入局新赛道(Starday)