大熊貓豬·侯佩原創或翻譯作品.歡迎轉載,轉載請注明出處. 如果覺得寫的不好請多提意見,如果覺得不錯請多多支援點贊.謝謝! hopy ;)
大家知道cocos2d本身是一個非常強悍的2d遊戲引擎,其中自帶了很多使用的圖像處理功能,但是别忘了apple自帶的core graphics裡也有很多強大的圖像處理功能,比如濾鏡 cifilter.
apple在ios上提供了近百種不同的濾鏡效果,可以用來友善快捷的渲染圖像.至于cifilter的具體使用大家可以參考蘋果cg程式設計相關的書籍,這裡由于篇幅原因不深入介紹了.
在這些濾鏡中,我們選擇一個複古類型的濾鏡(cisepiatone)來說明使用方法:
寥寥幾行代碼實作了将樣闆圖像轉換為濾鏡效果的輸出檔案.
接下來的關鍵就是如何将精力的紋理轉換為圖檔,下面是轉換方法:
顯示通過精靈大小設定對應渲染器的渲染大小,然後取得渲染後精靈的圖檔檔案.
因為用濾鏡處理圖檔對性能有不小的影響,是以為了效率因素,我們接下來寫一個緩存用來存放濾鏡過濾後的效果:
大家可以看到隻有在緩存中找不到對應ccspriteframe時才實際處理圖檔(傳回nil表示不在緩存中),否則直接使用之前處理過的圖檔,這樣可以極大的提升效率.
最後需要在sprite的精靈幀改變的時候調用濾鏡處理方法,是以我們重載其setspriteframe方法:
因為在濾鏡處理後也要修改精靈的spriteframe是以這裡用一個bool類型的變量_isrtcaused區分一下,否則必定死循環也 ;)
下面我們看一下實際的效果,這是正常遊戲人物的顯示:

下面是應用複古濾鏡後人物的效果:
最後是實際遊戲運作的效果,注意這是在模拟器上運作略有卡頓,在真機上還是很順暢的:
可以看到所有遊戲人物的顯示都被複古化了,包括遊戲界面按鈕中的人物,因為我是在gc類上做的效果.
有了cocoa中強大的圖像處理能力更是對cocos2d如虎添翼,後面如果大家感興趣我們再說說其他特效,比如馬賽克效果,曝光效果等等,see you ;)