|
|
我的编码方式是:
#define _RGB16BIT565(r,g,b) ((b & 31) + ((g & 63) << 5) + ((r & 31) << 11))
24位图已载入到显存bitmap.buffer中
转化并写到主表面的方法是以下代码,但白色全变成了红色,请各位帮忙看一下
USHORT *primary_buffer = (USHORT *)ddsd.lpSurface;
for (int index_y = 0; index_y < SCREEN_HEIGHT; index_y++)
{
for (int index_x = 0; index_x < SCREEN_WIDTH; index_x++)
{
UCHAR blue = (bitmap.buffer[index_y*SCREEN_WIDTH*3 + index_x*3 + 0]) >> 3,
green = (bitmap.buffer[index_y*SCREEN_WIDTH*3 + index_x*3 + 1]) >> 3,
red = (bitmap.buffer[index_y*SCREEN_WIDTH*3 + index_x*3 + 2]) >> 3;
// this builds a 16 bit color value in 5.6.5 format (green dominant mode)
USHORT pixel = _RGB16BIT565(red,green,blue);
primary_buffer[index_x + (index_y*ddsd.lPitch >> 1)] = pixel;
}
}
|
|