3_批处理的优势
批处理(batching)用于将多个对象的网格合并到一起,并在一个指令中渲染它们,而不是单独准备和绘制每个几何体
DrawCall
DrawCall是从CPU发送到GPU中用于绘制对象的请求,当场景中包含了大量对象时,这些操作就会非常耗时
比如要渲染一千个三角形,把它们按照一千个单独的网格进行渲染,所花费的时间要远大于渲染一个包含了一千个三角形的网格
在这两种情况下GPU的性能消耗其实并没有多大区别,但是CPU的DrawCall数目就会成为性能瓶颈
批处理的主要目的就是减少渲染所需的DrawCall数量
只有同一材质的物体才可以进行批处理,这是因为同一材质的物体,它们之间的不同仅仅在于顶点数据的差别,把这些顶点数据合并到一起发送给GPU,就可以完成一次批处理

动态批处理
动态批处理的要求
所有网格必须使用相同的材质引用
网格顶点属性不能大于900,如果shder中使用了顶点位置,纹理坐标,法线,那么它的顶点数不能超过300(这个数据未来会发生变化,不要依赖于这个数据)
对象的缩放比例要一致(可以是(1,1,1)(1,2,3)但如果其中包含了(-1,1,1)批处理就会失败)
使用了光照纹理的物体应该引用相同的光照纹理文件
使用了多Pass的shader会中断处理
静态批处理
静态批处理会占用更多内存,使用时需要注意
由于不同的图形API限制,合并到静态批处理的顶点数量是有上限的,一般为32000-64000个顶点
静态批处理的要求
对象必须标记为静态
其它需要注意的地方
