最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
ngui控制渲染顺序
一、渲染顺序的重要性
在Unity 3D(U3D)中,渲染是有特定顺序的。而NGUI的渲染顺序可以由开发者进行控制,合理控制NGUI的渲染顺序对于优化DrawCall至关重要。DrawCall是指U3D使用特定材质/纹理进行一次渲染的过程。有效的渲染顺序控制能够减少DrawCall的数量,从而提升游戏的性能。
二、DrawCall的产生机制
一个DrawCall代表U3D使用某个材质/纹理进行一次渲染操作。例如,当一次渲染中有3个对象,如果这3个对象都使用同一个材质/纹理,那么只会产生一次DrawCall;但如果这3个对象使用不同的材质/纹理,就会产生3个DrawCall。
举例说明
假设有对象A、B、C,A和B使用材质1,C使用材质2,那么会产生多少个DrawCall呢?这里存在两种情况:
情况一:3个DrawCall
- A:材质1
- B:材质2
- C:材质1
在这种情况下,由于对象的材质使用顺序较为分散,每次遇到不同材质的对象时都会产生一个新的DrawCall,所以总共会产生3个DrawCall。
情况二:2个DrawCall
- A:材质1
- C:材质1
- B:材质2
当A和C使用相同材质且连续渲染时,它们会被合并为一个DrawCall,而B使用不同材质,会单独产生一个DrawCall,因此总共产生2个DrawCall。
三、Unity的渲染规则
Unity默认会按照控件的Depth来进行渲染,渲染顺序是从后往前。当使用相同材质的控件连续渲染时,它们会被合并为一个DrawCall;如果遇到与前一个控件不同材质的控件,则会重新产生一个DrawCall。这就是上述例子中出现不同DrawCall数量的原因。当同一个界面中存在更多控件时,这种因材质使用顺序导致的DrawCall数量差异会更加明显。所以在进行UI制作时,开发者需要特别关注控件的材质使用顺序和Depth设置,以优化DrawCall,提高游戏性能。