我打算做一个塔防的h5游戏,一个场景出现的精灵和特效比较多。我一直在是选cocos2d js还是选egret这个问题上纠结,egret宣称使用了脏矩形技术,渲染效率很高,但是我不喜欢egret类as3风格,那么cocos2d js是否使用了脏矩形技术呢?
如果是用户手动设置渲染的区域,那我认为这个技术不能叫做脏矩形,只能说是限制了渲染区域而已。
真正的脏矩形并不一定能提升渲染效率。
相反,在很多场景里面,脏矩形计算的开销甚至会超过渲染开销。
我们知道js计算效率是很低的,而计算渲染区域需要大量的计算,元素越多计算越复杂,所以用js实现自动计算需要渲染的矩形不太合适。
当然,如果场景简单,计算量也不大,那这个估计能提升性能,但是元素不多,这个场景本身就能稳定在满帧为什么还要花成本去实现脏矩形。
cocos引擎有个更强大的功能,Layer有个bake方法,在里面所有元素不动的情况下,整个layer只会绘制一次,也能大幅度提升多元素的渲染效率。用户需要更改元素的时候,自动分拆回正常元素,而不需要手动去取消限制死的渲染区域。
要使用这个方法的话,需要对游戏进行良好的分层,并执行bake(); (bake功能提升的是canvas模式下的渲染效率)
var bakeLayer = new cc.Layer();
bakeLayer.bake();
希望能够帮到你~
谢谢啊,这对我帮助很大(^_^)