有一定工作經驗的遊戲開發者都知道遊戲運行中內存佔用最大的莫過於圖片資源,所以關於圖片資源的管理需要有一定的把握,一般開發中使用的格式爲png格式,因爲這種格式是全綵色,然而jpg是不支持透明度的,而且png的壓縮率比較高,這樣有一個好處就是,程序在讀取圖片資源的時候開闢的臨時存儲空間會較小。
我們來看一下cocos2d-x中支持的像素格式:
enumclass PixelFormat
{
//! auto detect the type
AUTO,
//! 32-bit texture: BGRA8888
BGRA8888,
//! 32-bit texture: RGBA8888
RGBA8888,
//! 24-bit texture: RGBA888
RGB888,
//! 16-bit texture without Alpha channel
RGB565,
//! 8-bit textures used as masks
A8,
//! 8-bit intensity texture
I8,
//! 16-bit textures used as masks
AI88,
//! 16-bit textures: RGBA4444
RGBA4444,
//! 16-bit textures: RGB5A1
RGB5A1,
//! 4-bit PVRTC-compressed texture: PVRTC4
PVRTC4,
//! 4-bit PVRTC-compressed texture: PVRTC4 (has alpha channel)
PVRTC4A,
//! 2-bit PVRTC-compressed texture: PVRTC2
PVRTC2,
//! 2-bit PVRTC-compressed texture: PVRTC2 (has alpha channel)
PVRTC2A,
//! ETC-compressed texture: ETC
ETC,
//! S3TC-compressed texture: S3TC_Dxt1
S3TC_DXT1,
//! S3TC-compressed texture: S3TC_Dxt3
S3TC_DXT3,
//! S3TC-compressed texture: S3TC_Dxt5
S3TC_DXT5,
//! ATITC-compressed texture: ATC_RGB
ATC_RGB,
//! ATITC-compressed texture: ATC_EXPLICIT_ALPHA
ATC_EXPLICIT_ALPHA,
//! ATITC-compresed texture: ATC_INTERPOLATED_ALPHA
ATC_INTERPOLATED_ALPHA,
//! Default texture format: AUTO
DEFAULT =AUTO,
NONE = -1
};
關於以上格式中有一部分的格式後面跟隨着一些阿拉伯數字,代表的意思是顏色的位所佔的內存大小,單位爲bit,計算機圖形學中對於計算機的顏色緩存的大小是有這麼介紹的
size = (picWidth*picHeight)*(r + g + b)bit;如RGB565這種格式所佔的內存大小爲(picWidth*picHeight)*(5 + 6 + 5);在texture2d這個類裏面有一個函數
staticvoid setDefaultAlphaPixelFormat(Texture2D::PixelFormat format);
(1)由此我們可以自定義設定遊戲中紋理的默認像素格式,以更好地把握遊戲的內存佔用,也可以控制包的大小;
(2)PVR這種格式目前只支持蘋果上使用,可以被ios的顯卡直接讀取,因此具有比png更好的效率以及更小的內存,推薦讀者在實現跨平臺開發過程中把握安卓跟ios的資源管理;
至於資源管理器,讀者可以參考以上自行實現