Share via


Función XMVectorSelect (directxmath.h)

Realiza una selección por componente entre dos vectores de entrada y devuelve el vector resultante.

Sintaxis

XMVECTOR XM_CALLCONV XMVectorSelect(
  [in] FXMVECTOR V1,
  [in] FXMVECTOR V2,
  [in] FXMVECTOR Control
) noexcept;

Parámetros

[in] V1

Primer vector que se va a comparar.

[in] V2

Segundo vector que se va a comparar.

[in] Control

Máscara vectorial usada para seleccionar un componente vectorial de V1 o V2. Si un componente de Control es cero, el componente correspondiente del vector devuelto será el primer componente del vector. Si un componente de Control es 0xFF, el componente correspondiente del vector devuelto será el segundo componente del vector. Para obtener información completa sobre cómo funciona la máscara vectorial, vea "Comentarios".

Normalmente, el vector usado para Control será la salida de una función de comparación vectorial (como XMVectorEqual, XMVectorLess o XMVectorGreater) o será la salida de XMVectorSelectControl.

Valor devuelto

Devuelve el resultado de la selección por componente.

Comentarios

Si se establece un bit determinado de Control , se usa el bit correspondiente de V2 ; de lo contrario, se usa el bit correspondiente de V1 . El pseudocódigo siguiente muestra la operación de la función:

XMVECTOR Result;

Result.u[0] = (V1.u[0] & ~Control.u[0]) | (V2.u[0] & Control.u[0]);
Result.u[1] = (V1.u[1] & ~Control.u[1]) | (V2.u[1] & Control.u[1]);
Result.u[2] = (V1.u[2] & ~Control.u[2]) | (V2.u[2] & Control.u[2]);
Result.u[3] = (V1.u[3] & ~Control.u[3]) | (V2.u[3] & Control.u[3]);

return Result;

No es necesario construir manualmente un vector de control. Hay dos formas sencillas de construir un vector de control adecuado:

  • Usar la función XMVectorSelectControl para construir un vector de control.

    Consulte Uso de XMVectorSelect y XMVectorSelectControl para ver una demostración de cómo se puede usar esta función.

  • El vector de control se puede construir mediante la constante XM_SELECT_[0,1] (consulte Constantes de la biblioteca DirectXMath). Por ejemplo, en pseudocódigo, una instancia de Control con los elementos :
       Control = { XM_SELECT_0,   XM_SELECT_1,   XM_SELECT_0,   XM_SELECT_1 }
    

    devolvería un resultado vectorial con los siguientes componentes de V1 y V2.

       Result = { V1.X,  V2.Y,   V1.Z,   V2.W }
    

Requisitos de la plataforma

Microsoft Visual Studio 2010 o Microsoft Visual Studio 2012 con Windows SDK para Windows 8. Compatible con aplicaciones de escritorio Win32, aplicaciones de la Tienda Windows y Windows Phone 8 aplicaciones.

Requisitos

   
Plataforma de destino Windows
Encabezado directxmath.h (incluya DirectXMath.h)

Consulte también

Funciones vectoriales con componentes

XMVectorSelectControl