關於cocos2dx開發中的圖片資源的一些小技巧

有一定工作經驗的遊戲開發者都知道遊戲運行中內存佔用最大的莫過於圖片資源,所以關於圖片資源的管理需要有一定的把握,一般開發中使用的格式爲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的資源管理;

至於資源管理器,讀者可以參考以上自行實現


發佈了39 篇原創文章 · 獲贊 17 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章