其他分享
首页 > 其他分享> > Unity Drawcall、渲染顺序、打包图集、特效清理、代码优化

Unity Drawcall、渲染顺序、打包图集、特效清理、代码优化

作者:互联网

什么是DrawCall

drawcall是CPU对底层图形绘制接口的调用命令GPU执行渲染操作,渲染流程采用流水线实现,CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发送渲染命令,GPU接收并执行对应的渲染命令。

DrawCall为什么会影响效率

如果DrawCall数量过多就会导致CPU进行大量计算,进而导致CPU的过载,影响游戏运行效率。

DrawCall的优化

图集、层级

所以并不是好多人的认知是只要同一个图集就会占用同一个DrawCall,通过上图分析发现不光是要使用同一个图集,还要使用同样的材质在同一个panel下才可以,否则就会重新进行调用一次DrawCall。另外需要注意的是,如果使用同一个图集、材质,但是中间夹杂了其他的渲染状态,也会导致重新调用一次DrawCall。

批处理

批处理从字面意思就是一块处理多个物体的意思,但是是什么样的都可以进行批处理吗?答案就是使用同一个材质的物体才可以。unity中有个两种批处理方式,动态批处理和静态批处理。对于动态批处理来说,好处就是一切都是自动处理的,并且物体是可以移动的。
动态批处理限制:

如果在静态批处理前有一些物体共享了相同的网格(例如这里的两个箱子),那么每一个物体都会有一个该网格的复制品,即一个网格会变成多个网格被发送给GPU。在上面的例子看来,就是VBO的大小明显增大了。如果这类使用同一网格的对象很多,那么这就是一个问题了,这种时候我们可能需要避免使用静态批处理,这意味着牺牲一定的渲染性能。例如,如果在一个使用了1000个重复树模型的森林中使用静态批处理,那么结果就会产生1000倍的内存,这会造成严重的内存影响。

参考

https://blog.csdn.net/yu1368072332/article/details/85676537

标签:渲染,批处理,DrawCall,Unity,CPU,静态,代码优化,物体,Drawcall
来源: https://www.cnblogs.com/code-fun/p/15410567.html