OpenGL

09-OpenGL 纹理基础(下) - Mip贴图

2019-05-29  本文已影响0人  SPIREJ

Mip贴图(多级渐远纹理)

1. 什么是Mip贴图?

Mip贴图是一种功能强大的纹理技巧。他可以提高渲染性能同时可以改善场景的显示质量。

OpenGL使用一种叫做多级渐远纹理(Mipmap)的概念来自动生成一系列的纹理图像。

多级渐远纹理

OpenGL有一个glGenerateMipmaps函数,在创建完一个纹理后调用,它就会承担接下来的所有工作了。

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贴图的纹理过滤

案例

1. 隧道

隧道案例中各个函数实现的功能

纹理(隧道案例).png

隧道效果

隧道效果

👉隧道完整代码点击这里下载

2.球体世界公转自转

公转自转案例中各个函数实现的功能

纹理(公转自转案例).png

公转自转效果

球体世界

👉球体世界完整代码https://github.com/SPIREJ/OpenGLBalls

上一篇下一篇

猜你喜欢

热点阅读