DirectX中的颜色表示
2015-09-15 16:24
148 查看
最近在学并行计算时,需要用到directX中的D3DCOLOR这一类型,才发现一直没仔细研究过DirectX中的D3DCOLOR这一类型。查看其定义后发现其定义如下:
typedef DWORD D3DCOLOR;
其中DWORD类型的定义如下typedef unsigned long DWORD;
是一个无符号型的长整数,(32位机器下)32位
在程序中对一个颜色赋值的时候习惯这样使用
D3DCOLOR color = D3DCOLOR_XRGB(0, 0, 255);//绿色
将D3DCOLOR_XRGB转到定义后发现这么一段代码
// maps unsigned 8 bits/channel to D3DCOLOR
#define D3DCOLOR_ARGB(a,r,g,b) \
((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
#define D3DCOLOR_RGBA(r,g,b,a) D3DCOLOR_ARGB(a,r,g,b)
#define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b)
从中D3DCOLOR_ARGB的定义可以看出它最后转化为D3DCOLOR类型值,并且注释了D3DCOLOR_ARGB中的四个变量分别对应颜色的四个通道:alpha, red, green, blue,其转化利用的是二进制的移位运算符<<和>>,在进行移位等操作后这四个参数分别占据了D3DCOLOR类型变量的四个字节,也就是D3DCOLOR的四个字节从高位到低位分别代表了颜色的alpha,red,green,blue通道。
比如现在有一个D3DCOLOR_ARGB(0,,255,192 ,128)在根据定义
// maps unsigned 8 bits/channel to D3DCOLOR
#define D3DCOLOR_ARGB(a,r,g,b) \
((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
进行计算:
然后将上面的四个结果进行或运算
最后得到的就是一个32位的无符号长整型数,它的每8个字节表示一个颜色通道。
typedef DWORD D3DCOLOR;
其中DWORD类型的定义如下typedef unsigned long DWORD;
是一个无符号型的长整数,(32位机器下)32位
在程序中对一个颜色赋值的时候习惯这样使用
D3DCOLOR color = D3DCOLOR_XRGB(0, 0, 255);//绿色
将D3DCOLOR_XRGB转到定义后发现这么一段代码
// maps unsigned 8 bits/channel to D3DCOLOR
#define D3DCOLOR_ARGB(a,r,g,b) \
((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
#define D3DCOLOR_RGBA(r,g,b,a) D3DCOLOR_ARGB(a,r,g,b)
#define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b)
从中D3DCOLOR_ARGB的定义可以看出它最后转化为D3DCOLOR类型值,并且注释了D3DCOLOR_ARGB中的四个变量分别对应颜色的四个通道:alpha, red, green, blue,其转化利用的是二进制的移位运算符<<和>>,在进行移位等操作后这四个参数分别占据了D3DCOLOR类型变量的四个字节,也就是D3DCOLOR的四个字节从高位到低位分别代表了颜色的alpha,red,green,blue通道。
比如现在有一个D3DCOLOR_ARGB(0,,255,192 ,128)在根据定义
// maps unsigned 8 bits/channel to D3DCOLOR
#define D3DCOLOR_ARGB(a,r,g,b) \
((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
进行计算:
然后将上面的四个结果进行或运算
最后得到的就是一个32位的无符号长整型数,它的每8个字节表示一个颜色通道。
相关文章推荐
- C++基于Directx MMX实现的图像灰度转换代码
- 操作系统进程描述
- 为什么DirectX做的游戏,操作感总是不如Windows原生程序?
- CPU显卡内存与3DMAX渲染的关系
- DirectX--昨天、今天、明天
- Win7版IE10下载包中暗藏了DirectX 11.1
- 2点关于ipx
- OpenGL与DirectX 比较
- DirectX学习第二篇:构建框架
- DirectX Exporter for 3ds Max
- (转)DirectX下 Viewing Frustum 的详细实现
- 绘制六面体
- 绘制位图 -chap4
- DirectX渲染状态设置
- 【DirectX游戏编程】游戏中摄像机类的实现(上篇:如何获得观察坐标系转换矩阵)
- openGL\DirectX游戏开发电子书下载
- 如何学好游戏3D引擎编程
- DirectX Media Objects
- Directx 9.0/9.0c 在vs2010 里面的环境配置
- D3D资源的概念