NGUI DrawCall
来源:互联网 发布:sql中别名 编辑:程序博客网 时间:2024/05/18 20:05
转自:http://blog.csdn.net/monzart7an/article/details/25212561
前置说明一:
Unity中的drawcall定义:每次引擎准备数据并通知GPU的过程称为一次Draw Call。
Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置、法线、UV等),(顶点如何组成三角形),变换(就是物体的位置、旋转、缩放、以及摄像机位置等),相关光源,纹理,渲染方式(由材质/Shader决定)等数据准备好,然后通知图形API——或者就简单地看作是通知GPU——开始绘制,GPU基于这些数据,经过一系列运算,在屏幕上画出成千上万的三角形,最终构成一幅图像。
前置说明二:
NGUI中的UIWidget的显示顺序:
每一个UIWidget的显示顺序由depth值决定,跟z轴没关系,而这个depth值是由两部分组成的,一个是UIWidget所在的UIPanel的depth和UIwidget自身的depth值进行加权计算。
并且,UIPanel的权重非常大,可以认为,UIPanel的depth大的所有UIWidget比UIPanel的depth小的所有UIWidget比最后计算的depth一定大。举个例子:
UIPanel1 depth x UIPanel2 depth y
UIWidget1 depth m UIWidget2 depth n
只要 x > y,那么不管m和n的大小,UIWidget1最后的depth一定大于UIWidget2。
减少drawcall的规则:
1、同一个UIPanel下的texture和font尽量放在同一个altals下。也表达了另外一个意思,使用同一个altals的元素尽量放在同一个UIPanel下面。
2、如果一个UIPanel下面使用了多个altals,那么尽量让使用相同altals的元素连续,尽量避免altals交叉。
规则1的前半部分好理解。后半部分,参照前面显示顺序问题可以知道。如果使用同一个altals的元素在两个不同的UIPanel下面,这就必然导致它们的drawcall分离。所以即使调整它们的depth一致,也无法合并成一个drawcall.
规则2的意思,举个例子就明白了:
同一个UIPanel下有4个UIWidget,w1,w2,w3,w4。
其中 W1和W2引用altals1。
其中 W3和W4引用altals2。
如果它们的depth顺序为 w1 : 1,w2 :2,w3 : 3,w4 : 4。
那么整个渲染需要2个drawcall,因为渲染顺序为 w1,w2,w3,w4。
而w1和w2公用一个altals,所以可以合并成一个drawcall,同理w3和w4可以合并成一个drawcall。
而如果它们的depth顺序为: w1 : 1,w2 :3,w3 : 2,w4 : 4。
那么整个渲染需要4个drawcall,因为渲染顺序为 w1,w3,w2,w4。
因为w1和w3不是公用一个altals,所以只能分开渲染。同理w3和w2,w2和w4也只能分开渲染。
阅读全文
0 0
- NGUI DrawCall
- NGUI 减少drawcall
- NGUI 减少drawcall
- NGUI Drawcall 优化
- NGUI 减少drawcall
- NGUI界面Drawcall优化
- NGUI DrawCall优化
- NGUI诡异的drawCall
- NGUI减少Drawcall
- NGUI减少Drawcall
- NGUI减少drawcall 的总结
- Unity NGUI UIPanel和DrawCall
- 【NGUI源码剖析】NGUI的drawcall
- 源码分析NGUI的DrawCall合并原理
- 源码分析NGUI的DrawCall合并原理
- Unity3d NGUI的drawcall,UISprite与UITexture
- NGUI DrawCall数量优化( 记录备忘 )
- Unity中的DrawCall与NGUI原理
- Material Design动画
- spring 下载地址
- 转载海子的《浅谈Java中的对象和引用》,对于岗入门的java菜鸟,收益匪浅呀
- Intellij IDEA中使用MyBatis-generator 自动生成MyBatis代码
- SQOOP部署及简单使用
- NGUI DrawCall
- Binder 内存分配
- python打不开数据集(有歧义的文件名)
- Android之camera架构---open之指定ID
- 以例子给出CRF的理解
- Windows 10系统MarkdownPad2 预览失败
- 【重磅】MDA以24亿美元终将DigitalGlobe收入囊中
- SolrDocument与实体类转换
- 欢迎使用CSDN-markdown编辑器