Поделиться через


Структура XMMATRIX (directxmath.h)

Описывает матрицу 4*4, выровненную по 16-байтовой границе, которая сопоставляется с четырьмя регистрами аппаратного вектора.

DirectXMath использует матрицы с основными строками, векторы строк и предварительное умножение. Значение сдачности определяется используемой версией функции (RH и LH).

Список дополнительных функций, таких как конструкторы и операторы, доступные при XMMATRIX программировании на C++, см. в разделе Расширения XMMATRIX.

Примечание Сведения об эквивалентных объектах D3DDECLTYPE, D3DFORMAT и 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 текущему экземпляру и возвращает reference для текущего экземпляра XMMATRIX .

Примечание Этот оператор доступен только при разработке на 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.

Инициализирует новый экземпляр структуры XMMATRIX из четырех экземпляров типа данных XMVECTOR.

Примечание Этот конструктор доступен только при разработке на 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

Инициализирует новый экземпляр XMMATRIX структуры из шестнадцати скалярных float значений.

Инициализирует новый экземпляр структуры XMMATRIX из шестнадцати скалярных float значений.

Примечание Этот конструктор доступен только при разработке на C++.
 

void XMMATRIX( const float *pArray) noexcept

Инициализирует новый экземпляр структуры XMMATRIX из шестнадцатиэленого массива элементов float .

Инициализирует новый экземпляр структуры XMMATRIX из шестнадцатиэленого массива элементов float .

Примечание Этот конструктор доступен только при разработке на C++.
 

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

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

Возвращает в reference элемент матрицы экземпляра XMMATRIX , как указано аргументами строки и столбца.

Этот оператор возвращает в reference матричный элемент экземпляра XMMATRIX , как указано аргументами строки и столбца.

Примечание Этот оператор доступен только при разработке на C++.
 

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 другой экземпляр 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

Оператор XM_CALLCONV XMMATRIX*( 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 параметр имеет значение row-major, и все функции 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 по-прежнему определяет эти XMMATRIX члены объединения для при создании приложения с _XM_NO_INTRINSICS_. XNAMath версии 2.05 предоставляет XM_STRICT_XMMATRIX согласия для принудительного применения поведения DirectXMath.
 
Пространства имен: Использование DirectX

Требования к платформе

Microsoft Visual Studio 2010 или Microsoft Visual Studio 2012 с windows SDK для Windows 8. Поддерживается для классических приложений Win32, приложений Магазина Windows и приложений Windows Phone 8.

Требования

Требование Значение
Заголовок directxmath.h

См. также раздел

Структуры библиотек DirectXMath

XMFLOAT4X4

Расширения XMMATRIX