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


структура XMFLOAT3SE (directxpackedvector.h)

Описывает трехмерный вектор из трех компонентов с плавающей запятой с 9-разрядными мантиссами, каждый из которых имеет одну и ту же 5-битовую экспоненту.

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

Синтаксис

struct XMFLOAT3SE {
  union {
    struct {
      uint32_t xm : 9;
      uint32_t ym : 9;
      uint32_t zm : 9;
      uint32_t e : 5;
    };
      uint32_t v;
  };
  void         XMFLOAT3SE();
  void         XMFLOAT3SE(
    const XMFLOAT3SE & unnamedParam1
  );
  XMFLOAT3SE & operator=(
    const XMFLOAT3SE & unnamedParam1
  );
  void         XMFLOAT3SE(
    XMFLOAT3SE && unnamedParam1
  );
  XMFLOAT3SE & operator=(
    XMFLOAT3SE && unnamedParam1
  );
  void         XMFLOAT3SE(
    uint32_t Packed
  ) noexcept;
  void         XMFLOAT3SE(
    float _x,
    float _y,
    float _z
  ) noexcept;
  void         XMFLOAT3SE(
    const float *pArray
  ) noexcept;
  void         operator uint32_t() noexcept;
  XMFLOAT3SE & operator=(
    uint32_t Packed
  ) noexcept;
};

Члены

9 xm

9-разрядный компонент x.

9 ym

9-разрядный компонент y.

9 zm

9-разрядный компонент z.

5 e

5-разрядная общая экспонента.

v

32-разрядное целое число без знака, представляющее трехмерный вектор.

void XMFLOAT3SE()

Конструктор по умолчанию для XMFLOAT3SE.

Конструктор по умолчанию для XMFLOAT3SE.

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

void XMFLOAT3SE( const XMFLOAT3SE & unnamedParam1)

Конструктор для XMFLOAT3SE.

Конструктор для XMFLOAT3SE.

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

XMFLOAT3SE & operator=( const XMFLOAT3SE & unnamedParam1)

void XMFLOAT3SE( XMFLOAT3SE && unnamedParam1)

Конструктор для XMFLOAT3SE.

Конструктор для XMFLOAT3SE.

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

XMFLOAT3SE & operator=( XMFLOAT3SE && unnamedParam1)

void XMFLOAT3SE( uint32_t Упаковано) noexcept

Инициализирует новый экземпляр из XMFLOAT3SE переменной uint32_t , содержащей данные компонента в упакованном формате.

Этот конструктор инициализирует новый экземпляр XMFLOAT3SE из переменной uint32_t , содержащей данные компонента в упакованном формате.

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

void XMFLOAT3SE( float _x, float _y, float _z) noexcept

Инициализирует новый экземпляр из XMFLOAT3SE трех float аргументов.

Этот конструктор инициализирует новый экземпляр XMFLOAT3SE из трех float аргументов.

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

void XMFLOAT3SE( const float *pArray) noexcept

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

Этот конструктор инициализирует новый экземпляр XMFLOAT3SE из аргумента массива с плавающей точкой из трех элементов.

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

Оператор void uint32_t() noexcept

Возвращает экземпляр класса , uint32_t содержащий компоненты экземпляра XMFLOAT3SE в упакованном формате.

Этот оператор возвращает экземпляр , uint32_t содержащий компоненты экземпляра XMFLOAT3SE в упакованном формате.

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

XMFLOAT3SE & operator=( uint32_t Упаковано) noexcept

Этот оператор назначает данные компонента вектора, упакованные в экземпляре uint32_t , текущему экземпляру XMFLOAT3SE.

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

Комментарии

Значения трех компонентов экземпляра хранятся в v экземпляра XMFLOAT3SE в следующем формате: элемент XMFLOAT3SEe структуры — экспонента, совместно используемая мантисами значений с плавающей запятой всех трех компонентов XMFLOAT3SE , — хранится в самом порядке битов возвращаемого значения, а мантисса компонента x — в наименее значимых битах.


   (E5Z9Y9X9): [31] EEEEEzzz zzzzzzyy yyyyyyyx xxxxxxxx [0]

Или подробно:

  • Биты от 0 до 8 упакованных — это 9-битовая мантисса значения с плавающей запятой компонента x : элемент xm текущей структуры.
  • Биты 9–17 упакованы — это 9-битовая мантисса значения с плавающей запятой компонента y : член ym текущей структуры.
  • Биты 18–26 упакованы — это 9-битовая мантисса значения с плавающей запятой компонента z : zm-член текущей структуры.
  • Биты 27–31 упакованы — это 5-битная экспонента , используемая с хранимыми мантиссами (xm, ym, zm) для представления размера каждого компонента: элемента e текущей структуры.
Так как в формате для хранения компонентов в XMFLOAT3SE структуре отсутствуют биты знака, все значения компонентов являются положительными.

XMFLOAT3SE можно загрузить в экземпляры XMVECTOR с помощью XMLoadFloat3SE.

Экземпляры XMVECTOR могут храниться в экземпляре XMFLOAT3SE с помощью XMStoreFloat3SE.

Пространства имен: Использование DirectX::P ackedVector

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

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

Требования

   
Верхняя часть directxpackedvector.h

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

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

Расширения XMFLOAT3SE