美文网首页
Mip贴图【纹理技巧】

Mip贴图【纹理技巧】

作者: buding_ | 来源:发表于2022-12-28 14:06 被阅读0次

    Mip贴图

    Mip贴图是一种强大的纹理技巧,它可以提高渲染性能同时改善场景的显示质量,它是特别针对纹理缩小时的显示效果。

    想象一下,假设我们有一个包含着上千物体的大房间,每个物体上都有纹理。有
    些物体会很远,但其纹理会拥有与近处物体同样高的分辨率。由于远处的物体可能只产生很少的片段,OpenGL从高分辨率纹理中为这些片段获取正确的颜色值就很困难,因为它需要对一个跨过纹理很大部分的片段只拾取一个纹理颜色。在小物体上这会产生不真实的感觉,更不用说对它们使用高分辨率纹理浪费内存的问题了。

    OpenGL使用一种叫做多级渐远纹理(Mipmap)的概念来解决这个问题,它简单来说就是一系列的纹理图像,后一个纹理图像是前一个的二分之一。多级渐远纹理背后的理念很简单:距观察者的距离超过一定的阈值,OpenGL会使用不同的多级渐远纹理,即最适合物体的距离的那个。由于距离远,解析度不高也不会被用户注意到。同时,多级渐远纹理另一加分之处是它的性能非常好。让我们看一下多级渐远纹理是什么样子的:


    Mip贴图示例.png

    使用Mip贴图

    只有minFilter等于以下四种模式,才可生成Mip贴图

    • GL_NEAREST_MIPMAP_NEAREST: 具有很好的性能,且闪烁现象较弱
    • GL_LINEAR_MIPMAP_NEAREST:使用了高质量的线性过滤器,游戏中常用
    • GL_LINEAR_MIPMAP_LINEAR 和GL_NEAREST_MIPMAP_LINEAR 过滤器在Mip层之间插入了一些额外的值,以消除他们之间的过略痕迹
     if (minFilter == GL_LINEAR_MIPMAP_LINEAR ||
       minFilter == GL_LINEAR_MIPMAP_NEAREST ||
       minFilter == GL_NEAREST_MIPMAP_LINEAR ||
       minFilter == GL_NEAREST_MIPMAP_NEAREST)
      //为纹理对象生成一组完整的mipmap
     glGenerateMipmap(GL_TEXTURE_2D);
    
    图片.png

    相关文章

      网友评论

          本文标题:Mip贴图【纹理技巧】

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