cocos2d 學習 第六章

2022-08-05 12:21:14 字數 1920 閱讀 3737

可以通過很多方式用單個檔案或者 紋理貼圖集(

texture atlases

)來生成精靈。 

紋理貼圖集是一張包含很多的紋理貼圖(),通常用於存放單個角色動畫的所有動畫幀。 

實際上你可以把任何放進同一張紋理貼圖中。我們的目的是把儘可能多的放進同一張紋理貼圖中,以達到節省空間的目的。很多

cocos2d

開發者使用

zwoptex

這個軟體來建立紋理貼圖集。

“精靈批處理”(

sprite batching

)是用於提高精靈渲染速度的技術。

它可以提高渲染大量相同精靈的速度,它同紋理貼圖集配合使用的效率最高。 

如果你將紋理貼圖集與精靈批處理配合使用的話,你只要呼叫一次渲染方法就可以完成紋理貼圖集裡所有的渲染。 

“渲染方法呼叫”(

draw call

)是把必要的資訊傳遞給圖形處理硬體以完成整個或者部份渲染的過程。

當你使用

ccsprite

的時候,每生成一個

ccsprite

節點都會呼叫一次渲染方法。

每一次渲染方法呼叫導致的系統開銷疊加起來會使遊戲的幀率大約降低

15%或者更多

(除非你使用

ccspritebatchnode

,它的 作用是作為一個額外的層用於新增多個精靈節點。

前提是這些精靈節點使用的是同一個紋理貼圖)。 

一、ccspritebatchnode

每次系統在螢幕上渲染一張貼圖時,圖形處理硬體必須首先準備渲染,然後渲染圖形,最後在完成渲染以後進行清理。上述過程是每一次在啟動渲染和結束渲染之間存在的固定系統開銷。如果圖形處理硬體知道你需要使用同一張紋理貼圖渲染一組精靈的話,圖形處理硬體將只需要為這一組精靈執行一次準備,

渲染,最後清理的過程了。

把使用同一張紋理貼圖的一組ccsprite節點新增到同一個ccspritebatchnode裡,比逐個渲染ccsprite要高效很多。 

建立多個ccsprite節點,將它們新增到同一個ccspritebatchnode中以提高渲染速度

1 ccspritebatchnode* batch = [ccspritebatchnode batchnodewithfile:@"

bullet.png"];

2[self addchild:batch];

3for (int i = 0; i < 100; i++)

4

ccspritebatchnode的作用很像cclayer,因為它本身並不顯示在螢幕上。不過 你只能把ccsprite加入ccspritebatchnode。 

不過你只能把ccsprite加入ccspritebatchnode。ccspritebatchnode 將一個檔名作為引數,使用這個引數的原因是所有被新增進 ccspritebatchnode的ccsprite節點都必須使用同一個檔案。 

因為所有的ccsprite節點都新增到同一個 ccspritebatchnode中,所以所有ccsprite節點都會使用相同的z-order(深度) 

來渲染。如果你的遊戲要求子彈在敵人的前面和後面同時飛過的話,你就必須 使用兩個ccspritebatchnode節點,因為只有這樣你才能使用具有不同z-order 的子彈精靈。 

通常,在預設的初始化方法-(id)init中,不應該呼叫除了[super init]

以外的方法。如果你必須在類的初始化方法中呼叫像[super initwith...]這樣

的方法,你應該將初始化方法命名為類似於-(id)initwith...這樣的格式 

1 +(id)bulletwithship:(ship *)ship 45

6 -(id)initwithship:(ship *)ship

15return

self;

16 }

第六章 配置

why 配置 工程師往往無法預知可能發生的全部情況,因此可能產生變更的地方免去直接的 修改而進行配置預留。 3 1 本地配置 這些配置其實也...

第六章 md

資料段 計算 0123h,0456h,0789h 的和 dw 即 define word,在這裡後面的資料儲存在cs的開始出,即mov bx 0的前面 start 因為dw開始出是資料,而不是 指令 ,所以使用start指明 段開始位置 將資料, ,棧放入不同的棧 assume cs code ds...

第六章 休眠

在第五章併發與競態中,介紹了一個當程序需要的資源被其他程序佔用,而不得不等待該資源的情形。這裡,要說的則是即便程序得到資源之後,由於資源本身的一些問題而不能預期的完成功能,必須休眠一段時間,直到它的要求得到滿足。兩種情形的區別是顯而易見的,不過在使用上,實在是有點相似。其實最近學的一些東西都是這樣,...