unity 静态合批

想做这样一个优化

因为cmd drawcall太多 materials太多导致 实际上只是贴图不一样

想用texture2DArray把他们合起来

texArray这步功能倒是很快就好了

但是从framedebugger看一直没有合起来 报的error是objects belong to different static batches

unity有一个枚举会把不能合批的原因列出来 这是其中之一

我就跟进去看。。。。看的我就很lost

代码里的意思是 smallMeshIndex不一样不能合并 这个东西其实就是meshID

但我从编辑器里能看到他俩已经是一个Mesh了 顶点数都是合过的 

后来意识到 是我做的另一件事情导致他们不能合批的 一测确实如此

 

unity 静态合批 功能是好的 前提是mesh必须静态的 不能运行时对mesh有更改

我为了做texArray的测试 在运行时 拿了mesh 改了uv  加了对texArray的索引 导致不能合批 去掉就变成一个drawcall了

 

而修正uv 这步 正确的工作流也应该是 编辑时 而不是运行时 所以目测这条路可行 开心

 

想了一下 我准备写个编辑器 解决objects have different materials(shader一样 只有贴图不一样 其它ubo不一样的 用一块buffer用instance也能解决 这个后期迭代了)

顺便其实能把mesh一起合了 不然unity运行时做静态合批 有这部分新建geometry的memory开销 好棒

https://i.cnblogs.com/EditPosts.aspx?postid=10557793&update=1

做出来了能出来lightmap没啥问题 建议location 局部使用

转载于:https://www.cnblogs.com/minggoddess/p/10521754.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值