void Conv16bit565_TO_24bitRGB(USHORT rgb565, BYTE *r, BYTE *g, BYTE *b)
{
// 16비트로 RGB를 표현하는 RGB 565에서 R,G,B값을 각각 분리해낸다.
// 각 비트를보면 다음과 같이 되어있다.
// RRRRRGGGGGGBBBBB (R: Red, G: Green, B: Blue)
BYTE red = (rgb565 & 0xF800) >> 11;
BYTE green = (rgb565 & 0x7E0) >> 5;
BYTE blue = (rgb565 & 0x1F);
*r = red << 3;
*g = green << 2;
*b = blue << 3;
}
그러므로 24bit -> 16bit -> 24bit 식으로 변환해보면 red, green, blue에서 각각 3,2,3 비트씩 손실이 일어나는 것임을 알 수 있다.
(이렇게 단순히 비트를 죽이는 방법 말고 다른 방법을 쓴다면 조금 더 살릴 수 있을 진 모르겠다.)
RRRRRRRRGGGGGGGGBBBBBBBB 에서
XXXRRRRRXXGGGGGGXXXBBBBB 으로
16bit rgb 555 에서는?
XRRRRRGGGGGBBBBB 이렇게 16bit를 구성 (X는 더미비트)
32bit XRGB 에서는?
XXXXXXXXRRRRRRRRGGGGGGGGBBBBBBBB