Partager via


Fonction XMVectorSelect (directxmath.h)

Effectue une sélection par composant entre deux vecteurs d’entrée et retourne le vecteur résultant.

Syntaxe

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

Paramètres

[in] V1

Premier vecteur à comparer.

[in] V2

Deuxième vecteur à comparer.

[in] Control

Masque vectoriel utilisé pour sélectionner un composant vectoriel à partir de V1 ou V2. Si un composant de Control est égal à zéro, le composant correspondant du vecteur retourné est le composant du premier vecteur. Si un composant de Control est 0xFF, le composant correspondant du vecteur retourné sera le deuxième composant du vecteur. Pour plus d’informations sur le fonctionnement du masque vectoriel, consultez les « Remarques ».

En règle générale, le vecteur utilisé pour Control est soit la sortie d’une fonction de comparaison de vecteurs (telle que XMVectorEqual, XMVectorLess ou XMVectorGreater), soit la sortie de XMVectorSelectControl.

Valeur retournée

Retourne le résultat de la sélection par composant.

Notes

Si un bit donné de Control est défini, le bit correspondant de V2 est utilisé; sinon, le bit correspondant de V1 est utilisé. Le pseudo-code suivant illustre le fonctionnement de la fonction :

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;

La construction manuelle d’un vecteur de contrôle n’est pas nécessaire. Il existe deux façons simples de construire un vecteur de contrôle approprié :

  • Utilisation de la fonction XMVectorSelectControl pour construire un vecteur de contrôle.

    Consultez Utilisation de XMVectorSelect et XMVectorSelectControl pour une démonstration de la façon dont cette fonction peut être utilisée.

  • Le vecteur de contrôle peut être construit à l’aide de la constante XM_SELECT_[0,1] (voir Constantes de la bibliothèque DirectXMath). Par exemple, dans le pseudo-code, une instance de Control avec les éléments :
       Control = { XM_SELECT_0,   XM_SELECT_1,   XM_SELECT_0,   XM_SELECT_1 }
    

    retournerait un vecteur Result avec les composants suivants de V1 et V2

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

Configuration requise pour la plateforme

Microsoft Visual Studio 2010 ou Microsoft Visual Studio 2012 avec le SDK Windows pour Windows 8. Pris en charge pour les applications de bureau Win32, les applications du Windows Store et les applications Windows Phone 8.

Spécifications

   
Plateforme cible Windows
En-tête directxmath.h (inclure DirectXMath.h)

Voir aussi

Fonctions vectorielles au niveau des composants

XMVectorSelectControl