30天自制操作系统

来源:互联网 发布:快餐店收银软件 编辑:程序博客网 时间:2024/05/01 22:40
void set_palette(unsigned char *rgb)
{                           int i, eflags;                           eflags = io_load_eflags();                             io_cli();                                                                       io_out8(0x03c8, 0);                           for (i = 0; i <= 15; i++) {                            io_out8(0x03c9, rgb[0] / 4);                            io_out8(0x03c9, rgb[1] / 4);                            io_out8(0x03c9, rgb[2] / 4);                            rgb += 3;              }              io_store_eflags(eflags);                  return;}

为什么

io_out8(0x03c9, rgb[0] / 4);
要除以4?


想起windows程序设计有调色板一节,

显示卡上的调色盘对照表运作过程如下图所示:
在8位显示模式中,每个图素占8位。图素值查询包含256RGB值的对照表的地址。这些RGB值可以正好24位宽,或者小一点,通常是18位宽(即主要的红、绿和蓝各6位)。每种颜色的值都输入到数字模拟转换器,以得到发送给监视器的红、绿和蓝三个模拟信号。





                                             
0 0