Cocos2dx之精灵批处理

前端之家收集整理的这篇文章主要介绍了Cocos2dx之精灵批处理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

C++之旅 QQ群:201704374

伸手党的救星,1T资料等你来战



一、什么是精灵批处理?

设想一下,在图片为精灵的情况下 ,此时精灵为节点,GPU经行渲染一次,如果有很多相同的精灵,那该如何经行渲染呢?渲染是根据节点数来进行渲染的,也就是说节点的数量决定了渲染的效率。如何提高效率呢?我们先用CCSpritebatchNode进行一次渲染,在这渲染之后,就去存入内存或者缓存中,当我们再次创建精灵时,可以通过CCSprite* sprite = CCSprite::createWithTexture(_batchNode->getTexture())中获取,从而解决多次渲染问题,这也是提高效率的方法之一;



二、精灵批处理程序设计

  1. #ifndef __T09BatchNode_H__
  2. #define __T09BatchNode_H__
  3. #include "cocos2d.h"
  4. USING_NS_CC;
  5.  
  6. class T09BatchNode : public CCLayer
  7. {
  8. public:
  9. T09BatchNode(void);
  10. ~T09BatchNode(void);
  11.  
  12. static CCScene* scene();
  13. CREATE_FUNC(T09BatchNode);
  14. bool init();
  15.  
  16. bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);
  17. CCSpriteBatchNode* _batchNode;
  18. };
  19.  
  20. #endif
  1. #include "T09BatchNode.h"
  2.  
  3.  
  4. T09BatchNode::T09BatchNode(void)
  5. {
  6. }
  7.  
  8.  
  9. T09BatchNode::~T09BatchNode(void)
  10. {
  11. }
  12.  
  13.  
  14. CCScene* T09BatchNode::scene()
  15. {
  16. CCScene* scene = CCScene::create();
  17. T09BatchNode* layer = T09BatchNode::create();
  18. scene->addChild(layer);
  19. return scene;
  20. }
  21.  
  22. bool T09BatchNode::init()
  23. {
  24. CCLayer::init();
  25.  
  26. CCSpriteBatchNode* batchNode = CCSpriteBatchNode::create("CloseNormal.png");
  27. addChild(batchNode);
  28. _batchNode = batchNode;
  29.  
  30. setTouchEnabled(true);
  31. setTouchMode(kCCTouchesOneByOne);
  32. return true;
  33. }
  34.  
  35. bool T09BatchNode::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent)
  36. {
  37. CCSize winSize = CCDirector::sharedDirector()->getWinSize();
  38.  
  39. // 创建2千个精灵
  40. for (int i = 0; i < 2000; i++)
  41. {
  42. CCSprite* sprite = CCSprite::createWithTexture(_batchNode->getTexture());
  43. _batchNode->addChild(sprite);
  44. sprite->setPosition(ccp(CCRANDOM_0_1() * winSize.width,CCRANDOM_0_1() * winSize.height));
  45. }
  46. return true;
  47. }




三实验现象

猜你在找的Cocos2d-x相关文章