MipMap与LOD是何物?

MipMap与LOD是何物?

LOD:模型金字塔

LOD:全称Level Of Detail,中文翻译“细节级别渐变”,顾名思义,不同的级别展示不同的细节,那么究竟这个技术是如何运用在游戏项目中的呢?通过例子我们来学习一下。关于为什么要使用这个技术,和游戏优化是密不可分的,使用这个技术可以减少需要处理的模型顶点数目,降低GPU性能瓶颈的风险。

原理:当模型离摄像机(可以是人物摄像机或其他摄像机)很远时,然后根据距离的远近使用不同模型级别,远的时候就选择低级别的模型,近的时候选择高细节模型,这样就可以减少模型上面的顶点和面片数量从而提高性能。

准备:准备三个相同的模型,但是这三个模型他们的三角面和顶点数都不同,这样就可以代表三种从高—中—低的层级。(由于没有找到模型资源,所以这里我们使用最能体现GPU性能消耗的particle特效来做,rate分别是20,10,5)

首先在层次面板创建一个EmptyGo,命名为TestLOD,对你找来的三个模型以“...LOD01”(结尾序号表示层级)命名,最后全部拖放到TestLOD下,记住记住,这三个物体位置要全部相同。



接下来选择TestLOD,添加LODGroup组件,添加完事的组件面板应该如图:


常用参数详解:

FadeMode:这个表示模型级别变化时候的过渡方式

LOD 0 ..:细节级别,百分比表示摄像机的可见范围(范围可调)

接下来我们运行游戏,在场景视图中我们手动拖动主摄像机,打开profile(性能分析器),可以看到在不同距离的时候,GPU的性能参数有明显的不同:

(后)


(前)


其中绿线就表示批处理数目,明显发现后面的批处理数目降低了一个,蓝线表示pass数目,pass数目也降低了一个,后面的顶点数也将低了0.1k。为什么要强调这个?因为我们优化就是从减少DrawCall开始的,减少DrawCall需要使用批处理技术开始的。


MipMap:纹理贴图金字塔

正如上面所说,mipmap针对的是纹理贴图,大白话就是,一个模型身上会有贴图,当我们对这个贴图使用了MipMap技术之后,那么在游戏运行中这个模型的贴图会根据摄像机距离模型的远近而调整不同的不同质量的贴图显示。

在这个游戏场景中,我们给一个模型贴了一个木纹贴图,当我们没有对这个贴图使用MipMap技术的时候,无论我们摄像机距离模型的位置在哪,这张贴图永远都是显示一样的,这样是完全没有必要的,我们使用这个技术就是为了让当摄像机比较远的时候,你用在精细的贴图我们玩家也看不见,而且还浪费资源,提高了性能瓶颈。




上面就是我们没有对贴图使用MipMap技术,然后测试的结果,那当我们使用了MinMap技术之后,结果又会是什么样子的呢?

发现图片大小变大了,这是因为我们使用MipMap技术之后,会对这个贴图生成八张精度质量不同的贴图,所以内存占用变大了。

所以关于这个技术是否使用,根据你的项目而定,什么都是有利有弊的。




工程下载地址:

链接:http://pan.baidu.com/s/1nv6UcHj 密码:odeo

环境映射和mipmap是OpenGL中高级纹理技术的重要组成部分。要实现环境映射,首先需要创建一个立方体贴图或球体贴图,这可以通过glGenTextures、glBindTexture和glTexImage2D函数来完成。环境映射技术通常用于模拟高光或反射效果,通过将这些贴图应用于物体表面,可以模拟物体表面如何从周围环境中反射光线。 参考资源链接:[OpenGL纹理映射深度解析:下篇](https://wenku.csdn.net/doc/4f9765xtrx?spm=1055.2569.3001.10343) mipmap技术则是为了优化纹理映射时的性能和视觉质量。它通过预先生成不同分辨率的纹理级别来实现,当物体距离观察者较远时,使用较小的纹理;距离较近时,使用较大且更详细的纹理。这样可以减少纹理失真和提高渲染效率。在OpenGL中,可以通过glGenerateMipmap函数来创建mipmap。 结合这些技术,可以实现更加逼真的三维场景渲染。例如,在渲染金属表面或水面时,环境映射可以用来创建反光效果,而mipmap则保证了当用户从不同距离观察物体时都能获得平滑的视觉效果。这些技术的结合使用,不仅提升了视觉体验,还优化了渲染性能。 对于希望深入学习OpenGL环境映射和mipmap技术的读者,强烈推荐查阅《OpenGL纹理映射深度解析:下篇》。这份资料详细讲解了这些高级技术的原理和实现,对于理解纹理映射的高级概念大有帮助。 参考资源链接:[OpenGL纹理映射深度解析:下篇](https://wenku.csdn.net/doc/4f9765xtrx?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值