真彩点格式



在真彩显示模式下,红绿蓝组成了每个点 并且直接连在一起成为色彩值, 而不是使用一个调色板查找表. 在 15 位模式每种颜色占 5 位, 在 16 位模式 每个点红色和蓝色占 5 位绿色占 6 位, 24 和 32 位模式 每种颜色占 8 位 ( 32 位点简单的增加一个 额外的填充字节来调整数据). 这些成分的布局 会因你的硬件而改变, 但是通常是 RGB 或 BGR 之一. 因为一个显示模式在使用之前并不知道布局, 你必须在使用下面的例程之前调用 set_gfx_mode()!


int makecol8(int r, int g, int b);
int makecol15(int r, int g, int b);
int makecol16(int r, int g, int b);
int makecol24(int r, int g, int b);
int makecol32(int r, int g, int b);
这些函数将颜色从独立于硬件的形式 (红绿蓝,范围 0-255) 转换到 依赖于点格式显示值. 转换到 15, 16, 24 或 32 位格式只需要做几个 移位, 因此相当的有效. 转换到 8 位颜色 则需要搜索调色板以寻找最佳匹配, 如果你 不设置一个 RGB 映射表(见后) 这相当的慢.

int makecol(int r, int g, int b);
将颜色从独立于硬件的格式 (红绿蓝,范围 0-255) 转换到当前显示模式决定的点格式, 它调用前面 8, 15, 16, 24, 或 32 位 makecol 函数中合适的一个.


int makecol_depth(int color_depth, int r, int g, int b);
将颜色从于硬件独立的格式 (红绿蓝, 范围 0-255) 转换到指定颜色深度的点格式.


int makecol15_dither(int r, int g, int b, int x, int y);
int makecol16_dither(int r, int g, int b, int x, int y);
给出颜色值和点坐标, 计算抖动的 15 或 16 位的 RGB 值. 这可以在减少真彩图片的颜色深度到高彩时得到更好的结果. 除了直接调用这些函数, 高彩抖动可以在载入图片时自动运行, 只需要先调用 set_color_conversion() 函数, 例如 set_color_conversion(COLORCONV_REDUCE_TRUE_TO_HI | COLORCONV_DITHER).

int getr8(int c);
int getg8(int c);
int getb8(int c);
int getr15(int c);
int getg15(int c);
int getb15(int c);
int getr16(int c);
int getg16(int c);
int getb16(int c);
int getr24(int c);
int getg24(int c);
int getb24(int c);
int getr32(int c);
int getg32(int c);
int getb32(int c);
给出在显示模式的点格式下的一个颜色, 这些函数将截取红绿蓝组合中的一个 (范围 0-255).

int getr(int c);
int getg(int c);
int getb(int c);
给出现在正在使用的显示模式下使用的点格式的一个颜色, 这些 函数将截取红绿蓝组合中的一个(范围 0-255), 它调用前面的 8, 15, 16, 24 或 32 位 get 函数中合适的一个.


int getr_depth(int color_depth, int c);
int getg_depth(int color_depth, int c);
int getb_depth(int color_depth, int c);
给出指定颜色深度的点格式中的一个颜色, 这些函数将截取红绿蓝组合中的一个 (范围 0-255).


extern int palette_color[256];
由当前的显示模式使用的映射调色板序列 (0-255) 到其它任何点格式的一张表. 在 256 色模式下,它恰好映射 序列数组. 在真彩模式下, 它在当前的调色板里查找指定的颜色号, 然后将 RGB 值转换到 合适的点格式.

#define MASK_COLOR_8 0
#define MASK_COLOR_15 (5.5.5 点)
#define MASK_COLOR_16 (5.6.5 点)
#define MASK_COLOR_24 (8.8.8 点)
#define MASK_COLOR_32 (8.8.8 点)
定义每个颜色深度下的透明精灵的掩点. 在 256 色的分辨率下为 0, 在真彩模式下 是亮粉红色点 (红值和蓝值最大, 绿值为零).




返回