栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

UGUI的DrawCall和Rebuild

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

UGUI的DrawCall和Rebuild

1.DrawCall的概念

DrawCall是CPU调用图像编程接口,命令GPU进行渲染的操作。造成DrawCall过高的性能瓶颈其实是CPU而不是GPU。UGUI的合并原理是将相同的材质进行合并操作。因此UGUI减少DrawCall的方式是尽可能地进行动态合批。

2.DrawCall的计算原理

2.1.计算Depth

(1)跳过不渲染的节点,如果处于渲染状态切没有任何其他相交的渲染元素,depth=0。

(2)如果处于渲染状态切有其他元素相交则找到相交元素中最大的depth,判断能不能合批,如果能合批则depth=maxDepth,否则depth=maxDepth+1。

(3)depth与是否相交有关,与是否为子节点无关。

2.2.材质球

计算出depth后,针对depth相同的情况下,获得材质球的Instance ID进行升序排列

2.3.纹理

再获得纹理的Instance ID进行升序排列

(1)使用图集SpriteAtlas则Instance ID为图集的ID

(2)单个图片没有图集Instance ID为图片的ID

(3)一个字体的Text,Instance ID为字体的ID

2.4.总结

所以DrawCall的计算就是上面3点从上到下的优先级顺序进行升序排列,只有满足3点相同GUI才能进行合批操作,算为一个DrawCall。

3.Rebuild概念

Canvas负责将子节点的UI元素的网格合并,并生成相应的渲染指令再发送到Unity的图形管道的过程。所以Canvas就是渲染UI的组件,当UI发生变化就要执行一次Batch,它是影响性能更大的元凶。注意Canvas的Batch只会影响其子节点,但不会影响其子Canvas。

4.Rebuild操作

Rebuild分为Layout Rebuilds和Graphic Rebuild

 4.1.Layout Rebuilds

重新计算一个layout组件的子节点的适当位置或者大小的时候触发

4.2.Graphic Rebuilds

graphic元素基本大小,旋转以及文字变化、图片的修改等触发

4.3.总结

Layout Rebuilds和Graphic Rebuilds都会触发Rebuild,UGUI会收集一帧的所有change,然后统一进行处理。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号