XMStoreUNibble4

Stores an XMVECTOR in an XMUNIBBLE4.

Syntax

void XMStoreUNibble4(
         XMUNIBBLE4 *pDestination,
         XMVECTOR V
)  

Parameters

pDestination
Type: XMUNIBBLE4 *

[out]

Address at which to store the data.

V
Type: XMVECTOR 

[in]

Vector containing the data to store.

Return value

None.

Remarks

The following pseudocode demonstrates the operation of the function.

  XMVECTOR N;
  static const XMVECTOR  Max = {15.f, 15.f, 15.f, 15.f };

  N = XMVectorClamp(V, XMVectorZero, Max);
  N = XMVectorRound(N);

  pDestination->x = (int8_t)N.v[0];
  pDestination->y = (int8_t)N.v[1];
  pDestination->z = (int8_t)N.v[2];
  pDestination->w = (int8_t)N.v[3];  

Note these are not normalized values. To convert to the RGBA 4/4/4/4 format, you must scale the input vector by (15.f, 15.f, 15.f, 15.f). Also, you will probably need to swizzle the standard .x = RED, .y = GREEN, .z = BLUE, .w = ALPHA color vector’s .x and .z value since the GPU format is BGR (not RGB).

Requirements

Header: Declared in directxpackedvector.h.