2012-11-13 26 views
1

我近來在iOS上繪製2D-sprites的不同技術(CoreAnimation,UIViews,CGContext和Open GL ES)進行了大量試驗。我從CoreAnimation獲得的最佳性能與開發時間相比,所以我會堅持(暫時)。一個用於多個CALayer的CGImageRef

要顯示位圖,我使用CALayers - 它工作得很好,並沒有比Open GL慢得多。 經常重複的圖案有多種(這對平臺遊戲來說是很典型的)。出於記憶的原因,我想重複使用存儲的圖像用於多個CALayers。

我可以這樣做嗎?怎麼樣?我想是這樣的:在

  1. 存儲位圖在內存
  2. 從UIImage的獲取一個CGImageRef任何形式(UIImage的?)
  3. 應用CGImageRef每個的CALayer應顯示位圖

威爾這實際上只存儲了指針到每個Layer的位圖或者「Apple-magic」爲每個CALayer創建了位圖的拷貝

謝謝。

回答

0

創建iOS的項目,以測試在此之後,這是我的結論是:

  • 可以設置內容(類型ID)來的UIImage。期。因此,imho作爲類型id是無用的:它應該是UIImage
  • 因此:不能將內容設置爲鍵入CGImageRef(如果使用__bridge id),則內容爲零且不會生成錯誤(與Apple文檔相反,這適用於基於afaik的MacOS X 10.6及更高版本)。

我發現沒有任何方法顯示瓦片多次,而不使用每個tileay地圖與CALayer工作RAM。你必須使用OpenGL ES來做到這一點。

+0

由於沒有人在3天內評論,我標記自己的答案是正確的。 – Florian

+0

我已經明確安裝了CGImage對象作爲CALayers的內容。說你只能安裝一個UIImage,因爲內容是錯誤的。事實上,當你說你可以使用UIImage時,我感到很驚訝。我總是使用CGImage。 –

+0

我不知道系統是否會在圖層之間共享相同的CGImage。 –