Pcgame 版 (精华区)

发信人: bell (花开时是冷冷月光), 信区: Pcgame
标  题:  Allegro 中译文档(真彩点格式)
发信站: 紫 丁 香 (Tue May  4 14:26:44 1999), 转信


真彩点格式

      makecol8
      makecol15
      makecol16
      makecol24
      makecol32
      makecol
      makecol_depth
      getr8
      getg8
      getb8
      getr15
      getg15
      getb15
      getr16
      getg16
      getb16
      getr24
      getg24
      getb24
      getr32
      getg32
      getb32
      getr
      getg
      getb
      getr_depth
      getg_depth
      getb_depth
      palette_color
      MASK_COLOR_8
      MASK_COLOR_15
      MASK_COLOR_16
      MASK_COLOR_24
      MASK_COLOR_32



在真彩显示模式下,红绿蓝组成了每个点 并且直接连在一起成为色彩值, 而不是使用一个调
色板查找表. 在 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 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, 在真彩模式下 是亮粉
红色点 (红值和蓝值最大, 绿值为零).

--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: jxjd.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.313毫秒