(directxmath.h) 的 XMMATRIX 结构

描述在映射到四个硬件矢量寄存器的 16 字节边界上对齐的 4*4 矩阵。

DirectXMath 使用行主矩阵、行向量和预乘法。 手动性取决于使用哪个函数版本 (RH 与 LH) 。

有关使用 C++ 编程时可用的 XMMATRIX 其他功能(例如构造函数和运算符)的列表,请参阅 XMMATRIX 扩展

注意有关等效D3DDECLTYPED3DFORMAT和DXGI_FORMAT对象的信息,请参阅 DirectXMath 库类型等效项。
 

语法

struct XMMATRIX {
  union {
    XMVECTOR r[4];
    struct {
      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;
    };
    float    m[4][4];
  };
  XMVECTOR              r[4];
  void                  XMMATRIX();
  void                  XMMATRIX(
    const XMMATRIX & unnamedParam1
  );
  XMMATRIX &            operator=(
    const XMMATRIX & M
  ) noexcept;
  XMMATRIX &            operator=(
    const XMMATRIX & unnamedParam1
  );
  void                  XMMATRIX(
    XMMATRIX && unnamedParam1
  );
  XMMATRIX &            operator=(
    XMMATRIX && unnamedParam1
  );
  void                  XMMATRIX(
    FXMVECTOR R0,
    FXMVECTOR R1,
    FXMVECTOR R2,
    CXMVECTOR R3
  ) noexcept;
  void                  XMMATRIX(
    float m00,
    float m01,
    float m02,
    float m03,
    float m10,
    float m11,
    float m12,
    float m13,
    float m20,
    float m21,
    float m22,
    float m23,
    float m30,
    float m31,
    float m32,
    float m33
  ) noexcept;
  void                  XMMATRIX(
    const float *pArray
  ) noexcept;
  float                 operator()(
    size_t Row,
    size_t Column
  ) noexcept;
  float &               operator()(
    size_t Row,
    size_t Column
  ) noexcept;
  XMMATRIX              operator+() noexcept;
  XMMATRIX              operator-() noexcept;
  XMMATRIX &XM_CALLCONV operator+=(
    FXMMATRIX M
  ) noexcept;
  XMMATRIX &XM_CALLCONV operator-=(
    FXMMATRIX M
  ) noexcept;
  XMMATRIX &XM_CALLCONV operator*=(
    FXMMATRIX M
  ) noexcept;
  XMMATRIX &            operator*=(
    float S
  ) noexcept;
  XMMATRIX &            operator/=(
    float S
  ) noexcept;
  XMMATRIX XM_CALLCONV  operator+(
    FXMMATRIX M
  ) noexcept;
  XMMATRIX XM_CALLCONV  operator-(
    FXMMATRIX M
  ) noexcept;
  XMMATRIX XM_CALLCONV  operator*(
    FXMMATRIX M
  ) noexcept;
  XMMATRIX              operator*(
    float S
  ) noexcept;
  XMMATRIX              operator/(
    float S
  ) noexcept;
};

成员

r[4]

四个矢量的数组,表示矩阵的行。

_11

_12

_13

_14

_21

_22

_23

_24

_31

_32

_33

_34

_41

_42

_43

_44

m[4]

void XMMATRIX ()

的默认构造函数 XMMATRIX

XMMATRIX 的默认构造函数。

注意 此构造函数仅在使用 C++ 进行开发时才可用。
 

void XMMATRIX ( const XMMATRIX & unnamedParam1)

XMMATRIX构造函数。

XMMATRIX 的构造函数。

注意 此构造函数仅在使用 C++ 进行开发时才可用。

XMMATRIX & operator= ( const XMMATRIX & M) noexcept

将 的一个实例的 XMMATRIX 矩阵数据分配给 的当前实例 XMMATRIX ,并将 返回 reference 给当前实例。

此运算符将 一个 XMMATRIX 实例的矩阵数据分配给 的当前实例 XMMATRIX ,并将 返回 reference 给当前实例。

注意 此运算符仅在使用 C++ 进行开发时可用。
 

XMMATRIX & operator=( const XMMATRIX & unnamedParam1)

void XMMATRIX( XMMATRIX && unnamedParam1)

XMMATRIX & operator=( XMMATRIX && unnamedParam1)

void XMMATRIX ( FXMVECTOR R0、FXMVECTOR R1、FXMVECTOR R2、CXMVECTOR R3) noexcept

从 的四个实例初始化 XMMATRIX 结构的新实例 XMVECTOR

XMVECTOR 数据类型的四个实例初始化 XMMATRIX 结构的新实例。

注意 此构造函数仅在使用 C++ 进行开发时才可用。

void XMMATRIX ( float m00, float m01, float m02, float m03, float m10, float m11, float m12, float m13, float m20, float m21, float m22, float m23, float m30, float m31, float m32, float m33) noexcept

从 16 个标float量值初始化 结构的新实例XMMATRIX

从 16 个标float量值初始化 XMMATRIX 结构的新实例。

注意 此构造函数仅在使用 C++ 进行开发时才可用。
 

void XMMATRIX ( const float *pArray) noexcept

从 16 个元素float数组初始化 XMMATRIX 结构的新实例。

从 16 个元素float数组初始化 XMMATRIX 结构的新实例。

注意 此构造函数仅在使用 C++ 进行开发时才可用。
 

float operator()( size_t Row, size_t Column) noexcept

float & 运算符 () ( size_t Row, size_t Column) noexcept

返回 reference 由行参数和列参数指定的实例 XMMATRIX 的矩阵元素的 。

此运算符向行参数和列参数指定的实例 XMMATRIX 的矩阵元素返回 reference

注意 此运算符仅在使用 C++ 进行开发时可用。
 

XMMATRIX operator+() noexcept

XMMATRIX operator-() noexcept

XMMATRIX &XM_CALLCONV operator+=( FXMMATRIX M) noexcept

XMMATRIX &XM_CALLCONV operator-=( FXMMATRIX M) noexcept

XMMATRIX &XM_CALLCONV 运算符*= ( FXMMATRIX M) noexcept

对 的当前实例 XMMATRIX 执行矩阵乘以另一个 实例 XMMATRIX ,并返回对已更新的当前实例的引用。

此运算符对 XMMATRIX 的当前实例执行矩阵乘以另一个 实例, XMMATRIX 并返回对当前实例的引用,该实例已更新。

注意 此运算符仅在使用 C++ 进行开发时可用。
 

XMMATRIX & operator*=( float S) noexcept

XMMATRIX & operator/=( float S) noexcept

XMMATRIX XM_CALLCONV operator+( FXMMATRIX M) noexcept

XMMATRIX XM_CALLCONV operator-( FXMMATRIX M) noexcept

XMMATRIX XM_CALLCONV 运算符* ( FXMMATRIX M) noexcept

对 的当前实例 XMMATRIX 执行矩阵乘以 的另一个实例 XMMATRIX

此运算符对 XMMATRIX 的当前实例执行矩阵乘以的另一个实例 XMMATRIX

注意 此运算符仅在使用 C++ 进行开发时可用。
 

XMMATRIX operator*( float S) noexcept

XMMATRIX operator/( float S) noexcept

注解

在 DirectXMath.h 头文件中,系统使用对象的别名 XMMATRIX ,特别是 CXMMATRIX。 标头使用 别名来符合不同编译器的最佳内联调用约定。 对于使用 DirectXMath 的大多数项目,只需将其视为 的确切别名 XMMATRIX就足够了。

有效:


typedef const XMMATRIX CXMMATRIX;

有关需要如何处理不同平台调用约定的详细信息的项目,请参阅 库内部

XMMATRIX 是主要行,接受 作为参数的所有 DirectXMath 函数 XMMATRIX 都要求将数据组织为行主。

中的数据 XMMATRIX 具有以下布局。


_11 _12 _13 _14
_21 _22 _23 _24
_31 _32 _33 _34
_41 _42 _43 _44

DirectXMath 将 XMMATRIX 定义为完全不透明类型。 若要访问 XMMATRIX 的各个元素,请对给定行使用等效类型(如 XMFLOAT4 )或整个矩阵 的XMFLOAT4X4

注意 XNAMath 2.x 定义为 XMMATRIX 包含 _11_44 成员和 m 数组成员的联合。 使用这些联合成员时,性能不佳。 DirectXMath.h 仍然为使用 _XM_NO_INTRINSICS_ 生成应用时定义这些XMMATRIX联合成员。 XNAMath 版本 2.05 提供了一个选择加入XM_STRICT_XMMATRIX来强制实施 DirectXMath 行为。
 
命名 空间: 使用 DirectX

平台要求

Microsoft Visual Studio 2010 或 Microsoft Visual Studio 2012 以及 Windows SDK for Windows 8。 支持 Win32 桌面应用、Windows 应用商店应用和 Windows Phone 8 应用。

要求

要求
Header directxmath.h

另请参阅

DirectXMath 库结构

XMFLOAT4X4

XMMATRIX 扩展