A 4D vector for storing unsigned, normalized values as signed 16-bit integers (type uint16_t).
If you are programming in C++, you can use the constructors and operator methods of this structure.
Note
See DirectXMath Library Type Equivalences for information about equivalent D3DDECLTYPE, D3DFORMAT, and DXGI_FORMAT objects.
struct XMUSHORTN4
The fields in the XMUSHORTN4 structure are declared as follows:
struct XMUSHORTN4
{
union
{
struct
{
uint16_t x; // Unsigned 16-bit integer in the range [0-65535]
// describing the x-coordinate of the vector.
uint16_t y; // Unsigned 16-bit integer in the range [0-65535]
// describing the y-coordinate of the vector.
uint16_t z; // Unsigned 16-bit integer in the range [0-65535]
// describing the z-coordinate of the vector.
uint16_t w; // Unsigned 16-bit integer in the range [0-65535]
// describing the w-coordinate of the vector.
};
uint64_t v; // Unsigned 64-bit integer representing the 4D vector.
};
Those XMUSHORTN4 constructors using floating point arguments require normalized input, which must be in the range of [0.0-1.0]. During instantiation, data is multiplied by 65535.0f, results are rounded, and then assigned to the appropriate members of XMUSHORTN4.
You can use XMUSHORTN4 to load instances of XMVECTOR from normalized values by using XMLoadUShortN4, which divides each component 65535.0f, rounds the result, and then assigns the components to an XMVECTOR instance.
You can store XMVECTOR instances containing normalized values into XMUSHORTN4 using XMStoreUShortN4, which multiplies each component by 65535.0f, and then rounds the result before assigning the values to the appropriate XMUSHORTN4 members.
Namespace: Use DirectX::PackedVector
Header: Declared in directxpackedvector.h.