赞 | 0 |
VIP | 2 |
好人卡 | 27 |
积分 | 1 |
经验 | 26327 |
最后登录 | 2019-10-13 |
在线时间 | 953 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 110
- 在线时间
- 953 小时
- 注册时间
- 2007-4-25
- 帖子
- 805
|
本帖最后由 苏小脉 于 2011-9-19 11:18 编辑
如果目标机器是 32 位,便可将数据读入 32 位整数数组 rgb 中,rgb 元素划分如下:
rgbr|gbrg|brgb|rgbr|gbrg|brgb|rgbr|...
可见每三个元素便可进行一次迭代,每次迭代处理 4 个 argb。
- argb[j] = 0xff000000 | (rgb[i] & 0xffffff00) >> 8;
- argb[j+1] = 0xff000000 | (rgb[i] & 0x000000ff) << 16 | (rgb[i+1] & 0xffff0000) >> 16;
- argb[j+2] = 0xff000000 | (rgb[i+1] & 0x0000ffff) << 8 | (rgb[i+2] & 0xff000000) >> 24;
- argb[j+3] = 0xff000000 | (rgb[i+2] & 0x00ffffff);
- i += 3, j += 4;
复制代码 64 位下则可以利用 64 位寄存器。
这个只是整十二字节的处理,如果有余数只好做特殊处理。 |
|