• Direct3D 9学习笔记(5)颜色


    一.三个宏

    // D3DCOLOR is equivalent to D3DFMT_A8R8G8B8
    #ifndef D3DCOLOR_DEFINED
    typedef DWORD D3DCOLOR;
    #define D3DCOLOR_DEFINED
    #endif
    
    // 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)
    

    返回的是一个DWORD

    二.D3DXCOLOR,D3DCOLORVALUE

    一个更精确的存储颜色的数据结构

    typedef struct _D3DCOLORVALUE {
        float r;
        float g;
        float b;
        float a;
    } D3DCOLORVALUE;
    
    typedef struct D3DXCOLOR
    {
    #ifdef __cplusplus
    public:
        D3DXCOLOR() {};
        D3DXCOLOR( UINT  argb );
        D3DXCOLOR( CONST FLOAT * );
        D3DXCOLOR( CONST D3DXFLOAT16 * );
        D3DXCOLOR( FLOAT r, FLOAT g, FLOAT b, FLOAT a );
    
        // casting
        operator UINT  () const;
    
        operator FLOAT* ();
        operator CONST FLOAT* () 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;
    

    三.顶点着色

    如下顶点颜色填充效果

    imageimage

    设置方法

    image

    有颜色的顶点坐标

    // Initialize three Vertices for rendering a triangle
    CUSTOMVERTEX Vertices[] =
    {
        { 150.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
        { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
        {  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    };
    
  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2627420.html
Copyright © 2020-2023  润新知