WEB开发网
开发学院图形图像Flash 第四章 渲染技术Ⅰ[FL 基理译] 阅读

第四章 渲染技术Ⅰ[FL 基理译]

 2009-05-30 12:08:36 来源:WEB开发网   
核心提示: 0xFFFFFFFF 的值相当于十进制的 4,294,967,295,因为这个值对于 int 来说太大了,第四章 渲染技术Ⅰ[FL 基理译](4),所以结果被“反转”了过来变成了 -1!当然这不是我们所期望的结果,如果使用 uint 类型的话,是纯红色,下面,就没

0xFFFFFFFF 的值相当于十进制的 4,294,967,295,因为这个值对于 int 来说太大了,所以结果被“反转”了过来变成了 -1!当然这不是我们所期望的结果。如果使用 uint 类型的话,就没问题了。因此,由于色彩值永远都是正数,并有可能超出 int 的值域范围,所以要使用 uint 来存储它们。

色彩合成

如何将红、绿、蓝三种颜色值组成一个有效的颜色值,这是个普遍的问题。假设有三个变量 red,green,blue,每个变量里面保存一个 0 到 255 之间的数。下面是这个公式:

color24 = red << 16 | green << 8 | blue;

加入透明度后,建立一个32位色彩值,公式如下:

color32 = alpha << 24 | red << 16 | green << 8 | blue;

这里用到了两个位操作符,大家以前可能没有接触过。位操作是对二进制(0或1)进行的操作,对于 24 位色来说,如果把颜色值的每一位都列出来,就会得到一串由 24 个 0 或 1 组成的字串。把十六进制 0xRRGGBB 分解成二进制后是这样的:RRRRRRRRGGGGGGGGBBBBBBBB,我们看到有 8 位red,8 位green,8 位blue,也就是说 8 位二进制数等于 256。

在色彩合成公式中,第一个位操作符是 << ,是一个按位左移操作符,该操作是将二进制数值向左侧移动。比如,红色值(red)为 0xFF 或 255,可以由二进制表示为:

11111111

将它向左移动 16 位,结果是:

111111110000000000000000

在 24 位色彩中,它表示红色,转换为二进制后为 0xFF0000,是纯红色。

下面,假设有一个绿色值(green)为 0x55(十进制 85),二进制表示为:

01010101

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:第四章 渲染 技术

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接