1,圖形解碼(Image Decoder)
原本Good使用來解碼圖形的程式庫是ImageStone,這是個C++的影像處理程式庫。當初會用它,是因為容易使用。但因為只是用來載入圖形,所以在作PSP版移植時,就另外作了一個簡單的image decoder,不過當時只作了PNG格式的支援就沒再繼續進行。
現在繼續完成了BMP及JPEG格式的支援。
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太陽旋轉,而太陽慢慢自轉。