cocos2dx學習:TexturePacker的使用


首先要解釋一下,為什么要使用TexturePacker?

這是應為我們做的游戲最終要運行在Android手機或者蘋果手機上,而Android或者ios系統使用的是OpenGL ES來渲染。所以我們要針對OpenGL ES來進行優化。

內存方面,OpenGL ES紋理要求寬和高都是2的n次冪的倍數。想一想,如果圖片的寬為33,而高為65,那么圖片加載到內存后的大小為多少?考慮到寬和高都是2的n次冪,所以加載到內存后的大小是64*128。所以我們可以考慮將小的圖片拼成到的圖片,然后加載。

渲染速度方面,OpenGL ES要求切換的紋理少,所以將圖片拼成大圖片,這樣就減少了紋理的切換。

所以使用TexturePacker是很有必要的。

 

打開TexturePacker,點擊Add Folder,將圖片全部加載進來。注意:我們應該事先將要拼湊的圖片放到同一個文件夾下。

這樣。TexturePacker就自動將我們要拼湊的圖片拼成了一個大圖,並且大圖的寬和高都是2的n次冪的倍數。

下面設置輸出格式:

Texture format設置成PNG。然后選擇Data file和Texture file的保存位置。點擊工具欄上的Publis。這樣我們就得到了plist文件和png文件。

 

下面就是在cocos2d-x中使用這兩個文件。

將這兩個文件復制到Resources文件夾中。

使用下面的代碼加載着兩個文件

 

[cpp]  view plain copy
 
 
  1. CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("last.plist","last.png");  


接着創建一個CCSpriteBatchNode,將要渲染的精靈加載到CCSpriteBatchNode。

 

 

[cpp]  view plain copy
 
 
  1. CCTexture2D *texture=CCTextureCache::sharedTextureCache()->textureForKey("last.png");  
  2.   
  3. CCSpriteBatchNode *node=CCSpriteBatchNode::batchNodeWithTexture(texture);  
  4.   
  5. addChild(node);  

 

 

然后就是創建精靈並且加載精靈了。

 

[cpp]  view plain copy
 
 
  1. CCSprite *s1=CCSprite::createWithSpriteFrameName("bird.png");  
  2.   
  3. s1->setPosition(ccp(35,32.5));  
  4.   
  5. node->addChild(s1);  
  6.   
  7. CCSprite *s2=CCSprite::createWithSpriteFrameName("cat.png");  
  8.   
  9. s2->setPosition(ccp(100,100));  
  10.   
  11. node->addChild(s2);  

 

其中“bird.png”是小圖片的名字。注意:CCSpriteBatchNode中的Sprite都要用同一個紋理。

 

本文出自:http://blog.csdn.net/zhy_cheng/article/details/8680931

 

===============================================================

說明:

1.當點擊 Add Folder時,是選擇一個特定的文件夾,在選擇有存儲圖片的文件夾時不會顯示此文件夾下的所有圖片,即顯示是一個空文件夾。不要理會這些,直接到存放圖片的文件夾目錄,然后點擊選擇文件夾。

2.可以在左邊設置輸出的數據文件的路徑(一般數據文件路徑和紋理文件路徑是相同的),如果在左邊沒有設置相關的路徑,那么在點擊Publish時會彈出保存框。建議在左邊設置保存路徑,因為在左邊除了可以設置保存路徑外,還可以設置保存的紋理圖片的格式,可以是.png格式的也可以是.bmp格式的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM