前置说明一:
Unity中的drawcall定义:
每次引擎准备数据并通知GPU的过程称为一次Draw Call。
Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置、法线、UV等),(顶点如何组成三角形),变换(就是物体的位置、旋转、缩放、以及摄像机位置等),相关光源,纹理,渲染方式(由材质/Shader决定)等数据准备好,然后通知图形API——或者就简单地看作是通知GPU——开始绘制,GPU基于这些数据,经过一系列运算,在屏幕上画出成千上万的三角形,最终构成一幅图像。
前置说明二:
NGUI中的UIWidget的显示顺序:
每一个UIWidget的显示顺序由depth值决定,跟z轴没关系,而这个depth值是由两部分组成的,一个是UIWidget所在的UIPanel的depth和UIwidget自身的depth值进行加权计算。

本文详细介绍了Unity中的Draw Call概念以及NGUI中UIWidget的显示顺序。通过理解UIPanel的depth值计算,提出了减少Draw Call的两个关键规则:同一UIPanel内的纹理和字体应尽量放在同一Atlas中,且使用相同Atlas的元素应连续放置在同一UIPanel内,以避免Draw Call分离。遵循这些规则可以有效优化NGUI的渲染效率。
最低0.47元/天 解锁文章
7143

被折叠的 条评论
为什么被折叠?



