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


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

Описывает трехмерный вектор с компонентами X и Y, хранящимися в виде 11-разрядного числа с плавающей запятой, и компонентом Z, хранящимся в виде 10-разрядного значения с плавающей запятой.

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

Синтаксис

struct XMFLOAT3PK {
  union {
    struct {
      uint32_t xm : 6;
      uint32_t xe : 5;
      uint32_t ym : 6;
      uint32_t ye : 5;
      uint32_t zm : 5;
      uint32_t ze : 5;
    };
      uint32_t v;
  };
  void         XMFLOAT3PK();
  void         XMFLOAT3PK(
    const XMFLOAT3PK & unnamedParam1
  );
  XMFLOAT3PK & operator=(
    const XMFLOAT3PK & unnamedParam1
  );
  void         XMFLOAT3PK(
    XMFLOAT3PK && unnamedParam1
  );
  XMFLOAT3PK & operator=(
    XMFLOAT3PK && unnamedParam1
  );
  void         XMFLOAT3PK(
    uint32_t Packed
  ) noexcept;
  void         XMFLOAT3PK(
    float _x,
    float _y,
    float _z
  ) noexcept;
  void         XMFLOAT3PK(
    const float *pArray
  ) noexcept;
  void         operator uint32_t() noexcept;
  XMFLOAT3PK & operator=(
    uint32_t Packed
  ) noexcept;
};

Члены

6 xm

6-разрядная мантисса для компонента x.

5 xe

5-разрядная степень смещением для компонента x.

6 ym

6-разрядная мантисса для компонента y.

5 ye

5-битовая степень смещения для компонента y.

5 zm

5-разрядная мантисса для компонента z.

5 ze

5-битовая степень смещением для компонента z.

v

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

void XMFLOAT3PK()

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

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

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

void XMFLOAT3PK( const XMFLOAT3PK & unnamedParam1)

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

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

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

XMFLOAT3PK & operator=( const XMFLOAT3PK & unnamedParam1)

void XMFLOAT3PK( XMFLOAT3PK && unnamedParam1)

Назначает данные компонента вектора из одного экземпляра XMFLOAT3SE в текущий XMFLOAT3SEэкземпляр .

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

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

XMFLOAT3PK & operator=( XMFLOAT3PK && unnamedParam1)

Назначает данные компонента вектора из одного экземпляра XMFLOAT3PK в текущий XMFLOAT3PKэкземпляр .

Этот оператор назначает данные компонента вектора из одного экземпляра XMFLOAT3PK текущему экземпляру XMFLOAT3PK.

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

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

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

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

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

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

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

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

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

void XMFLOAT3PK( const float *pArray) noexcept

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

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

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

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

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

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

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

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

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

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

Комментарии

Нет знаковых битов. Это означает, что все числа частичной точности являются положительными. Компонент z хранится в наиболее значимых битах, а компонент x — в наименее значимых битах, как показано ниже:

(Z10Y11X11): [31] ZZZZZzzz zzYYYYYy yyyyyXXX XXxxxxxx [0]

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

  • Биты 0–5 v — это 6-разрядная мантисса значения с плавающей запятой компонента x : элемент xm структуры.
  • Биты 6–10 v — это 5-битовая степень значения с плавающей запятой компонента x , являющегося элементом xe структуры.
  • Биты 11–16 v — это 6-битовая мантисса значения с плавающей запятой компонента y : элемент ym структуры.
  • Биты 17–21 v — это 5-битовая степень значения с плавающей запятой компонента y : член структуры ye .
  • Биты 22–26 v — это 5-разрядная мантисса значения с плавающей запятой компонента z : элемент zm структуры.
  • Биты 27–31 v — это 5-битовая степень значения с плавающей запятой компонента z : элемент ze структуры.
XMFLOAT3PK можно загрузить в экземпляры XMVECTOR с помощью XMLoadFloat3PK.

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

MIN_F10 / MIN_F11 = 6,10352e-5

MAX_F10 = 64512

MAX_F11 = 65024

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

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

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

Требования

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

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

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

Расширения XMFLOAT3PK