2013年8月22日 星期四

Image Decoder and Render Pipe Improvement

作了幾個更新。

1,圖形解碼(Image Decoder)

原本Good使用來解碼圖形的程式庫是ImageStone,這是個C++的影像處理程式庫。當初會用它,是因為容易使用。但因為只是用來載入圖形,所以在作PSP版移植時,就另外作了一個簡單的image decoder,不過當時只作了PNG格式的支援就沒再繼續進行。


現在繼續完成了BMPJPEG格式的支援。

BMP:BMP的格式比較簡單些,是自行實作。
PNG :使用libpng
JEPG:使用libjpeg

目前還缺GIF的支援,另外取消TGA格式支援。

而在Windows平台上,則直接使用系統提供的GDI+來作圖形解碼。將ImageStone替換掉後,code size縮減了約40k。

2,繪圖模組(Render Pipe)

基於前次的rect packing的研究結果,利用昨天台風假在家,花了幾個小時將演算法整合進到GoodEngine的繪圖模組裡,過程相當順利。


以範例遊戲25940m為例,遊戲全部使用了9張貼圖。以原本的繪圖引擎來說,這9張貼圖會被載入並建立成各自獨主的9張貼圖。如此在繪圖時,貼圖間的切換就會相當頻繁。現在加上texture packing支援後,9張貼圖可以全部合併到1張1024x1024的貼圖內,這樣就能省掉切換的時間提升速度,同時也省掉額外貼圖記憶體的浪費。


3,新增範例

新增了一個簡單的範例solar,建立簡單的太陽系系統示範物件階層架構的使用。

這個範例建立三個貼圖物件用來代表太陽、地球及月球。月球繞行parent object地球轉,地球繞行parent object太陽旋轉,而太陽慢慢自轉。


沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...