zoukankan      html  css  js  c++  java
  • 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, },
    };
    
  • 相关阅读:
    IE浏览器下ajax缓存导致数据不更新的解决方法
    .NET C# Tostring format 格式化字符串
    解决jquery.validate.js的验证bug
    jquery中attr和prop的区别
    Jquery操作下拉框(DropDownList)实现取值赋值
    【MVC】自定义Scaffold Template
    【HTML5+MVC4】xhEditor网页编辑器图片上传
    回归与梯度下降法及实现原理
    浅谈强化学习的方法及学习路线
    【OpenCV学习笔记之一】图像加载,修改及保存
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2627420.html
Copyright © 2011-2022 走看看