静态批处理

这是我在《Unity游戏优化 (第2版)》看的,记录一下~

Unity也提供了第二种批处理机制:静态批处理

其最大的区别就是:
只能处理标记为Static的对象,因此叫静态批处理

静态批处理的要求:
1.网格必须标记为Static(里面的Batching Static)
通过Inspecter面板设置
缺点就是不能修改对象的变换(移动、旋转、缩放)

2.每个被静态批处理的网格都需要额外的内存
取决于批处理网格中复制的次数

静态批处理工作时,会把所有标记为static的可见网格数据复制到一个更大的网格数据缓冲区中,并通过一个DrawCall传到渲染管线中,同时忽略原始网格

如果进行静态批处理的网格各不相同,那么与正常渲染对象相比,不会增加内存的使用量,因为存储网格需要的空间量是相同的

咋用静态批处理会浪费内存呢?
比如有1000个树:
a.如果不用静态批处理,渲染1000个和1个的内存消耗是相同的,因为他们都引用相同的网格数据,在这种情况下去别的就是每个对象的变换,
b.如果启用了批处理,那么就会将1000个树合成一个大的网格,都存到缓冲区中,每个都存了一个世界坐标,这样就会造成1000倍的内存消耗

3.合并到静态处理中的顶点数量是有上限的(和动态的差不多)

4.网格实例可以来自任何网格数据源,但他们必须使用相同的材质饮用
使用不同的材质会被分配到不同的静态批处理组,每个组有单独的材质


注意:
1.DrawCall需要运行才能看到
2.在运行场景后加入的Batching Static对象,不能自动包含到静态批处理处理中
(因为会重新计算网格与渲染管线同步之间造成巨大的运行开销,所以不会被执行。可以使用StaticBatchUtility.Combine()方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值