首页 > 技术文章 > 3.NGUI Draw Call(渲染调用)

Oceanou 2014-09-30 11:41 原文

在Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。Draw Call值越低,会得到更好的渲染性能。

 

 

NGUI 查看Draw工具(NGUI-OPEN-Draw Call Tool)

 

 

NGUI 方面的Draw Call 优化:

(1)     打包图集

一、每个材质/纹理的渲染一定是会产生DrawCall的,这个DrawCall只能通过打包图集来进行优化。

二、从功能角度进行划分,例如UI可以划分为公共部分,以及每个具体的界面,功能上,显示上密切相关的图片打包到一起 

 

(2)渲染顺序

一、  U3D的渲染是有顺序的,NGUI的渲染顺序是由我们控制的,控制好NGUI的渲染顺序,你才能控制好DrawCall。

二、  一个DrawCall,表示U3D使用这个材质/纹理,来进行一次渲染,那么这次渲染假设有3个对象,那么当3个对象都使用这一个材质/纹理的时候,就会产生一次DrawCall。假设3个对象使用不同的材质/纹理,那么无疑会产生3个DrawCall。

 

例子:

A,B使用材质1,C使用材质2,这时候会有几个Draw Call?

 

有两种情况,3Draw Call

A:材质1

B:材质2

C:材质1

 

第二种情况,2DrawCall

A:材质1

C:材质1

B:材质2

 

 

渲染顺序:Unity默认会按照控件的Depth来渲染。从后往前渲染,当使用相同材质的控件会合并为一个Draw Call。如果和前一个材质不相同则会重新产生一个Draw Call。所以会有上面两种不同的结果,如果同一个界面有更多的空间存在时,这个问题会更明显。在UI制作的时候就需要特别注意这一点。

推荐阅读