D3DXCOLOR 和 D3DCOLOR 和 D3DCOLORVALUE

D3DCOLOR 是一个DWORD 型。第一个byte表示Alpha值,后面三个byte依次是r(红)g(绿)b(蓝)值。32位。

下面是一些关于D3DCOLOR 的宏:

 

  • D3DCOLOR_ARGB(a,r,g,b) - 第一个byte表示Alpha值,后面三个byte本别表示红,绿,蓝。
  • D3DCOLOR_RGBA(r,g,b,a) - 前三个byte分别表示红,绿,蓝,最后一个byte是Alpha值
  • D3DCOLOR_XRGB(r,g,b) - Alpha值为1,三个byte分别表示红,绿,蓝

 

 

typedef struct _D3DCOLORVALUE {
float r;
float g;
float b;
float a;
} D3DCOLORVALUE;

可以使用结构体D3DCOLORVALUE来定义Direct3D中的颜色,这种颜色类型多用于指定灯光和材质的颜色。

D3DXCOLOR是一个C++ 的类,实现了到上述两种类型强转,所以可以上述两种类型可以用的地方,都可以用它代替。

下面是它的定义:

 

typedef struct D3DXCOLOR
{
#ifdef __cplusplus
public:
    D3DXCOLOR() {}
    D3DXCOLOR( DWORD argb );
    D3DXCOLOR( CONST FLOAT * );
    D3DXCOLOR( CONST D3DXFLOAT16 * );
    D3DXCOLOR( CONST D3DCOLORVALUE& );
    D3DXCOLOR( FLOAT r, FLOAT g, FLOAT b, FLOAT a );

    // casting
    operator DWORD () const;

    operator FLOAT* ();
    operator CONST FLOAT* () const;

    operator D3DCOLORVALUE* ();
    operator CONST D3DCOLORVALUE* () const;

    operator D3DCOLORVALUE& ();
    operator CONST D3DCOLORVALUE& () const;

    // assignment operators
    D3DXCOLOR& operator += ( CONST D3DXCOLOR& );
    D3DXCOLOR& operator -= ( CONST D3DXCOLOR& );
    D3DXCOLOR& operator *= ( FLOAT );
    D3DXCOLOR& operator /= ( FLOAT );

    // unary operators
    D3DXCOLOR operator + () const;
    D3DXCOLOR operator - () const;

    // binary operators
    D3DXCOLOR operator + ( CONST D3DXCOLOR& ) const;
    D3DXCOLOR operator - ( CONST D3DXCOLOR& ) const;
    D3DXCOLOR operator * ( FLOAT ) const;
    D3DXCOLOR operator / ( FLOAT ) const;

    friend D3DXCOLOR operator * ( FLOAT, CONST D3DXCOLOR& );

    BOOL operator == ( CONST D3DXCOLOR& ) const;
    BOOL operator != ( CONST D3DXCOLOR& ) const;

#endif //__cplusplus
    FLOAT r, g, b, a;
} D3DXCOLOR, *LPD3DXCOLOR;

 

 

 

posted @ 2013-09-10 20:18  lc_cnblog  阅读(647)  评论(0编辑  收藏  举报