1.Mip贴图-多级渐远纹理
mip贴图是一种功能强大的纹理技巧,它可以提高渲染性能的同时可以改善场景的显示质量。
举例来说:一个场景内有远的物体和近的物体,远处物体的纹理会和近处物体纹理有相同的分辨率。由于远处物体只能产生很少片段,OpenGL从高分辨率纹理中为这些片段获取正确的纹理值就很困难,这里会产生两个问题:
1.从大跨度的纹理片段拾取一个纹理颜色值,会感觉不真实(闪烁问题)
2.对一个小的片段使用高分辨率纹理显得浪费内存。
如图下图所示
![](https://img.haomeiwen.com/i2261629/63075ba068293fe4.png)
由于距离比较远,解析度不会太受到关注。
openGL有一个glGenerateMipmaps函数来完成多级渐远纹理操作。
场景:如果以缩小的方式来填充纹理,就可以使用Mip贴图
2.各向异性过滤
当一个纹理贴图被过滤的时候,OpenGL使用纹理坐标来判断一个特定的几何片段将落在纹理的具体位置。然后,紧邻这个位置的纹理单元使用GL_NEAREST 和 GL_LINEAR过滤操作进行采样。
当视角正视场景时候,会出现模糊的状态,正视在这里的官方用语叫做“正向同性过滤”,而在一般情况下,都是采用各项异性过滤。
各向异性过滤步骤:
第一:查询得到支持的各向异性过滤的最大数量,可以受用glGetFloatv函数,并以GL_MAX_TEXTURE_MAX_ANTISOTROPY_EXT参数。
第二:我们可以使用glTExParameter函数以及GL_TEXTURE_MAX_ANISOTROPY_EXT,设置各项异性过滤数据。
openGL里面纹理设置参数都是以glTexParameterf开头
//设置纹理参数(各项异性采样)
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAX_ANISOTROPY_EXT,flargest);
//设置各向同性过滤,数量为1.0表示(各向同性采样)
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAX_ANISTROPY_EXT,1.0f);
各向异性过滤的数量越大,沿着最大变化方向(沿着最强观察点)所采样的纹理单元就越多。值1.0表示纹理过滤(各向同性过滤)。
各向异性过滤会增加额外的工作,包括其他纹理单元。很可能对性能早何从赢下那个。但是,现代硬件上,应用这个特性对速度造成影响不大。
更重要的是,目前他已经成为流行游戏、动画和模拟程序的一个标准特性。
隧道和球体世界效果配图
![](https://img.haomeiwen.com/i2261629/f7175d6a96c4fcb3.png)
网友评论