美文网首页OpenGL
09-OpenGL 纹理基础(下) - Mip贴图

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

作者: SPIREJ | 来源:发表于2019-05-29 15:22 被阅读0次

    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

    相关文章

      网友评论

        本文标题:09-OpenGL 纹理基础(下) - Mip贴图

        本文链接:https://www.haomeiwen.com/subject/ifchtctx.html