2007年6月27日 星期三

『 02.03 - PNG : PLTE 』

PLTE (0x50, 0x4C, 0x54, 0x45)


  • RGB (3 bytes)
    Each palette's RGB (Red, Green, Blue) color value (0x00 ~ 0xFF).
    For example:
    0xFFFFFF = White
    0x000000 = Black
    0xFF0000 = Red
    0x00FF00 = Green
    0x0000FF = Blue
整個 PLTE 資料裡只包含 RGB 值,所以總大小應當被 3 除盡。反過來說,將 PLTE 總大小除 3 後將可得到裡頭的的色格 (palette) 數量。之前也提到說 NDS 只支援到 16 bits 的顏色,而 PNG 裡頭的顏色卻是以 24 bits (3 bytes) 來儲存,所以記得顯示時要先將 24 bits 的顏色轉換成 16 bits 的顏色。

#define IX_8B5B(x) ((u8)(((u16)(x) <<>> 8))

以上的 macro 則是將 x 值 * 32 後再 / 256 用途就是把 0 ~ 255 (8 bits) 的數字轉換成 0 ~ 31 (5 bits) 但我也不確定我這做法是否正確,至少目前看起來還算正常。

沒有留言:

張貼留言