尊天命,尽人事
分类: LINUX
2013-10-26 12:47:10
Directcolor:
pixel = red_index << offset | green_index << offset | blue_index << offset | alpha_index << offset;
where *_index's are the index to the Hardware LUT, ie:
red = red_map[red_index];
In Directcolor, you have to initialize the LUT first, by sending an FBIOPUTCMAP ioctl. If you want
Directcolor to behave like Truecolor, then send a linear colormap where:
{red|green|blue|alpha}_map[i] = i;
One more note, the above is fine if each color component is 8-bits in size (RGB888, for instance), but for RGB555, you have to downscale. So the untested code below will work better:
red_map[i/(1 << (8 - red_length))] = i;
red_map[i/(1 << (8 - 5))] = i;
red_map[i/8] = i;