目前cocos2d是1/60s绘制一次,每次将所有node重绘一遍;如果不使用batchnode,则在每次draw时都需要bind一次texture,这个非常耗时。
优化的最初想法是:扫描所有node对象,记住texture和顺序,将扫描顺序作为该texture的z,利用opengl-es的深度探测功能,最后按照texture进行绘制,每次texutre只bind一次,然后全部绘制该texture。
我们用goo资源做测试,关卡采用TowerOfGoo,没修改前,只有40多帧。
实际效果:帧数上去了,变成60,但是效果没有了。
原因:goo资源中有很多透明图片,而opengl的深度探测与混合不能同时使用。如果使用了,那么就必须保证绘图顺序。
结果:如果想优化,还是需要采用batchnode方式