zoukankan      html  css  js  c++  java
  • D3DXMATRIX

    在Direct3D中进行3D变换很多时候需要构造一个4*4的矩阵,D3DXMATRIX就用来表示这个矩阵。
    该类继承自结构体D3DMATRIX(注意二者写法不同,相差一个X)
    __________________________________________________________________
    结构体D3DMATRIX的定义(版本DX9):
    typedef struct _D3DMATRIX {
    union {
    struct {
    float _11, _12, _13, _14;
    float _21, _22, _23, _24;
    float _31, _32, _33, _34;
    float _41, _42, _43, _44;

    };
    float m[4][4];
    };
    } D3DMATRIX;

    __________________________________________________________________
    类D3DXMATRIX的定义如下(版本DX9):
    #ifdef __cplusplus
    typedef struct D3DXMATRIX : public D3DMATRIX
    {
    public:
    D3DXMATRIX() {};
    D3DXMATRIX( CONST FLOAT * );
    D3DXMATRIX( CONST D3DMATRIX& );
    D3DXMATRIX( CONST D3DXFLOAT16 * );
    D3DXMATRIX( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
    FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
    FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
    FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );


    // access grants
    FLOAT& operator () ( UINT Row, UINT Col );
    FLOAT operator () ( UINT Row, UINT Col ) const;

    // casting operators
    operator FLOAT* ();
    operator CONST FLOAT* () const;

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

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

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

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

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

    } D3DXMATRIX, *LPD3DXMATRIX;

    #else //!__cplusplus
    typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
    #endif //!__cplusplus
    __________________________________________________________________
    可以看到该类封装了一些运算符函数,使其进行矩阵运算时,能够像数学中的矩阵运算一样方便。
    主要用于3D变换,如绘制流水线(Rending Pipeline)中的世界变换、取景变换、投影变换等。
  • 相关阅读:
    centos搭建window下写的flask程序
    【MTK】iwpriv命令说明
    vs2019专业版离线安装方法
    Python文件编译成exe
    python3升级与安装
    谷歌浏览器https和flash禁用的解决方法
    SQL注入常见函数
    nmap简介与运用
    WPF 万维网对战象棋 客户端+服务端(全套可执行代码在文章末尾)
    《软件工程实践》2020春季学期教学回顾--线上教学,化弊为利
  • 原文地址:https://www.cnblogs.com/dragon2012/p/2940200.html
Copyright © 2011-2022 走看看