比如说一个界面
这里应该有 5个drawcall其中 四个闪应该要合并drawcall的 但是对节点的顺序必须要有要求的排
这样排 就是8个drawcall
只有这样排才能合并drawcall 既不合理 也完全没有任何可以让开发者优化的空间
比如说一个界面
这里应该有 5个drawcall其中 四个闪应该要合并drawcall的 但是对节点的顺序必须要有要求的排
这样排 就是8个drawcall
只有这样排才能合并drawcall 既不合理 也完全没有任何可以让开发者优化的空间
BMFont 类型的 label 在未来版本是可以和其他贴图进行合并的,TTF 类型无法合并
你这里遇到的恰恰是文字打断了批处理,这是游戏开发中最常见的情况,优化就如你所做的那样,将 Sprite 放在一起,文字放在一起,至于具体怎么排,可以和策划商量优化到比较好管理的状态。
自动批处理不会去打乱项目中设计的场景树,否则 bug 的风险太高。至于你说的不合理和没有优化的空间,目前的方案可能对你来说不够智能,如果有什么建议可以跟我们说,我们目前没有任何其他的批处理设计计划
我似乎明白一点了
如果说用改场景节点结构的话 ,我想做不到太合理,原先的关系被打乱 有些如果要控制你节点的隐藏和绽放的 可能因为节点的改变面变得麻烦,能不能在节点上再加一个属性 NGUI中的Depth来控制节点的渲染顺序,在不改变结构的前提下,手动优化drawcall的合并
这的确是一个可行的方案,相当于之前的 global z order,目前为了引擎核心层的简单干净,我们去除了这个概念,在渲染层重构的过程中,是有可能加入这个功能的。
嗯 因为我发现 按照现在架构, 在实际 应用上,在ui这一块 基本没有几个能合并 的drawcall
还是跟场景结构有关 很典型的 排版 一张图片 一个label 这两个节点挂 在一个你物件上,成为一个item 如果有隐藏显示的逻辑 肯定是直接隐藏父节点,如果为了合并drawcall而不得不把所有的item拆开来 图片放一起 label放一起,那么逻辑会非常混乱
你的文字只要是 bmfont 是可以合并的
我现在在尝试自己添加个Depth到CCNode的属性中 如何让这个属性在Cretor编辑器中显示出来?
目前自己改造了一版,大致思路就是 node可以设置为合并drawcall的父节点,其下的子节点RenderCommand 按照 depth 排序,同一个depth的 按照贴图调整顺序,这里同一贴图的保证还是按之前的场景树中的顺序。
@panda 借楼提两个问题
1、cocos2dx中对于drawcall的控制是否要达到unity中那么严格
其他的程序说在做UNITY项目的时候,drawcall是能省则省。但是我做cocos的项目时觉得文字稍微多占一些drawcall对于帧率并没有影响。
2、使用ugui的drawcall合并规则(如果两节点之间的其他节点与这两节点不重叠,则可尝试合并drawcall),这样的规则是否会提高性能,还是在判断矩形是否重叠时反而会让性能降低?
ugui 什么时候优化到这地步了?
谢谢回答。
关于第二个问题,ugui的drawcall合并思路,是否一定会提高性能?因为我想着 如果要判断的矩形过多,对于cpu来讲消耗也是比较大的。是否还需要配合例如“是否是静态ui”之类的判断,才能发挥出效果?
反正我试了最新版是这样的。
我在想的是不是可以吧labelttf,或者系统label预生成贴图,然后就可以跟bmFont一样合并了。。
不错~~~~
贼TM先进,静态UI这个方法不错,但是我看到Creator的roadmap里有个多个节点合并成一张贴图的功能,不知道跟这个的区别。