首页 > 技术文章 > cocos2dx之SpriteBatchNode的作用

skyry 2015-11-30 20:48 原文

在cocos2dx 中有时候我们需要绘制大量的相同的sprite,如果一个一个的sprite天价到场景中,那么openGL 会绘制很多次,这样有时候会降低帧率;

这时候我们想到这肯定需要优化了,恰好cocos2dx 给我们提供了 SpriteBatchNode,我们讲所有的sprite添加到 SpriteBatchNode 对象上,这时候openGL只需要对这些srpite进行一次绘制就可以了。

如:

    SpriteBatchNode* batchNode = SpriteBatchNode::create("girl.png");
    this->addChild(batchNode);
    for (int i =0; i < 999; i ++) {
        Sprite* sprite = Sprite::create("girl.png");
        float x = rand_0_1() * 800;
        float y = rand_0_1() * 600;
        sprite->setPosition(Point(x,y));
        batchNode->addChild(sprite);
    }

  不过需要注意的是 SpriteBatchNode 和 Sprite 的图片的纹理应该是相同的,简单的说就是同一张图片文件。

推荐阅读