Mip贴图(多级渐远纹理)
1. 什么是Mip贴图?
Mip贴图是一种功能强大的纹理技巧。他可以提高渲染性能同时可以改善场景的显示质量。
OpenGL
使用一种叫做多级渐远纹理(Mipmap)
的概念来自动生成一系列的纹理图像。
![](https://img.haomeiwen.com/i1276164/500d0fa653949a91.png)
OpenGL
有一个glGenerateMipmaps
函数,在创建完一个纹理后调用,它就会承担接下来的所有工作了。
![](https://img.haomeiwen.com/i1276164/208006382bca5db0.png)
2. 设置Mip 贴图
//设置mip贴图基层
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_BASE_LEVEL,0);
//设置mip贴图最大层
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_LEVEL,0);
3. 什么时候生成Mip贴图?
只有minFilter
等于一下四种模式,才可以生成Mip贴图
//具有非常好的性能,并且闪烁现象非常弱
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
//常用于对游戏进行加速,它使用了高质量的线性过滤器
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
//过滤器在Mip层之间执行了一些额外的插值,以消除他们之间的过滤痕迹
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
//三线性Mip贴图。纹理过滤的黄金准则,具有最高的精度
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
if(minFilter == GL_LINEAR_MIPMAP_LINEAR ||
minFilter == GL_LINEAR_MIPMAP_NEAREST ||
minFilter == GL_NEAREST_MIPMAP_LINEAR ||
minFilter == GL_NEAREST_MIPMAP_NEAREST)
//4.加载Mip,纹理生成所有的Mip层
//参数:GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D
glGenerateMipmap(GL_TEXTURE_2D);
4. 经过Mip贴图的纹理过滤
![](https://img.haomeiwen.com/i1276164/713c836bb94aeca4.png)
案例
1. 隧道
隧道案例中各个函数实现的功能
![](https://img.haomeiwen.com/i1276164/9de7bba396c3f55b.png)
隧道效果
![](https://img.haomeiwen.com/i1276164/f78eda818b4d531a.gif)
2.球体世界公转自转
公转自转案例中各个函数实现的功能
![](https://img.haomeiwen.com/i1276164/1127a652b552e817.png)
公转自转效果
![](https://img.haomeiwen.com/i1276164/c5071a1ccdb64446.gif)
网友评论