赞
踩
一、离线合批(Offline Batch)
离线合批就是在游戏运行前,先用工具把相关资源做合批处理,以减轻引擎实时合批的负担。
适合离线合批的是静态模型和场景物件。如场景地表装饰面:石头/砖块等等。
离线合批方式有:
1. 美术利用专业建模工具合批。如3D Max/Maya等。
2. 利用引擎插件或工具。如Unity的插件MeshBaker和DrawCallMinimizer,可以将静态物体进行合批。
3. 自制离线合批工具。如果第三方插件无法满足项目需求,就要程序专门实现离线合批工具。
二、实时合批(Runtime Batch)
Unity引擎内建了两种合批渲染技术:Static batching(静态合批)和Dynamic batching(动态合批)。
原理:利用合并出来的大网格直接提交数据,这样的话只提交一次数据,也没有引起切换渲染状态,所有只产生一次DrawCall。
静态合批,静态合批的原理即化整为零,将多个场景物体预先合成一个大的物体进行绘制,unity5的实现就是整合成一个大的vbo,而不整合IBO,一次性提交vbo给gpu,然后并不是把整个vbo都绘制,而是每次需要绘制其中某个某些物体时改变IBO,选择大vbo上的某一段进行绘制。静态合批可以将多个小物体的绘制合并成一个大物体的绘制,减少对渲染状态的改变,它一次并行绘制多个物体,理论上是最快的绘制方法,不过最大的缺点是因为合成新的大vbo需要耗费额外的大量内存,同时不能宣染动态物体,因为合并vbo的时候已经确定顶点数据了,顶点数据不能更改(例如unity5对LOD合批的实现也是将所有层次的lod都预先合并进去),另外一个vbo的大小是有限制的,如果物体数量过多,也会被拆成多个绘制。
PlayerSettings中开启static batching,对需要静态合批物体的Static打钩即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。