NGUI之渲染DrawCall的合并】的更多相关文章

在Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call.Draw Call值越低,会得到更好的渲染性能. (NGUI 查看DrawCall工具(NGUI-OPEN-Draw Call Tool)) Unity默认会按照控件的Depth来渲染.从后往前渲染,NGUI为了减少GPU状态切换的消耗(比如切换material),把相同material的widget合并,减少DrawCall的数量.如果和前一个材质不相同则会重新产生一个Draw Call. 如图:…
看了很多关于NGUI drawCall的文章,见得比较多的一个观点是:一个 Atlas 对应一个Drawcall. 好奇心下做了个demo,两个panel中只用到一个Atlas,却产生了10个drawCall,百思不得其解.寻觅已久终于找到三篇文章: 一.http://game.ceeger.com/forum/read.php?tid=14653 [NGUI]减少NGUI 3的DrawCall数量 刚升级到NGUI3, 这下不打紧,DrawCall数由5个增长到了十七八个,想想应该不会是NGU…
[NGUI显示DrawCall详细信息] UIDrawCall中有个宏,SHOW_HIDDEN_OBJECTS,默认为关闭状态.将此宏打开,NGUI即会将DrawCall对象显示在Hierarchy中.如下: 对象的命名规则如下:…
今天在运行之前的程序时,无意中发现一个简单的menu菜单页面drawcall居然达到接近30了,这个数值感觉太高了. 后网上查询关于降低drawcall的方法,发现主要有以下几点: 1.少用Panel: 2.少用Atlas: 3.尽量避免夹层(即不同材质的UISprite相互间层级夹杂,如L2,L4使用mat1,L1,L3使用mat2,这样就形成夹层现象): 分析了一下自己的实现,发现其实主要问题都是夹层引起的,因此重新设计了以下层的分布,并在开发过程中有意识的注意这个问题, 具体实现思路如下:…
http://bbs.9ria.com/thread-282804-1-1.html http://www.unitymanual.com/blog-97-238.html…
看了非常多关于NGUI drawCall的文章.见得比較多的一个观点是:一个 Atlas 相应一个Drawcall. 但事实上NGUI内部有自己的一套对DrawCall的处理规则. 相关的规则有: 1.Atlas图集数量有关 2.Atlas图集的调用顺序(绘制顺序)有关 3.和UIPanel的数量有关 一.降低NGUI 3的DrawCall数量 升级到NGUI3. DrawCall数由5个增长到了十七八个.想想应该不会是NGUI的问题吧.后来整理了一下.发现有两点:          1)对于同…
1 渲染流程 NGUI的渲染流程其实就是把Widget组件生成Mesh所需要的缓存数据,然后生成对应的DrallCall组合对应数据,生成渲染需要的Mesh数据,提交渲染. Widget(数据) UIGeometry被UIWidget实例化之后,通过UIWidget的子类,也就是UISprit,UILabel等,在OnFill()函数里算出所需的Geometry缓存(顶点数,UV,Color,法线,切线), 参考Sprite的Fill函数为例,根据Widget的绘制区域.颜色.UV等信息生产顶点…
上图是一个简要的NGUI的图形工作流程,UIGeometry被UIWidget实例化之后,通过UIWidget的子类,也就是UISprit,UILabel等,在OnFill()函数里算出所需的Geometry缓存(顶点数,UV,Color,法线,切线).PS:之所以要生成这些数据,是为了之后生成mesh来渲染 而UIPanel,通过遍历自己子类下所有的UIWidget组件(已经按深度排序),先创建一个UIDrawCall,然后把该Widget的material,texture,shader对象以…
吐槽 今天,在vue中遇到 复杂表格的渲染 ,需要合并表头的单元格,且合并单元格的那列还是动态数据,也就是说你不知道会有多少组要合并起来,哎,我也有点说不清楚,废话不多说了,看代码把: 代码示例 data数据是后端接口返回的,其中的数据格式是这样的: [ { "studentId": "ff808081651e03d4016530b937f50a33", "studentName": "傅xx", "studentC…
吐槽 今天,在vue中遇到 复杂表格的渲染 ,需要合并表头th的单元格,且合并单元格的那列的表头数据是动态数据,也就是不知道会有多少个表头列,而这几个表头列还分了好几个子表头. 这个需求在js里用Juicer模板很好做的,思路我是有的,但就是对于vue,我也算初学者,很多概念不是很懂,这就限制了思路. 在网上搜了很多合并单元格的都是简单的数据合并,也就是td合并, 不是我们的需求,就不贴了. 哎,废话不多说了,看代码吧: 代码示例 使用iviewui的table组件: 最初,直接使用项目中的iv…