Share via


Função XMVectorSelect (directxmath.h)

Executa uma seleção por componente entre dois vetores de entrada e retorna o vetor resultante.

Sintaxe

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

Parâmetros

[in] V1

Primeiro vetor a ser comparado.

[in] V2

Segundo vetor a ser comparado.

[in] Control

Máscara de vetor usada para selecionar um componente de vetor de V1 ou V2. Se um componente de Control for zero, o componente correspondente do vetor retornado será o componente do primeiro vetor. Se um componente de Control for 0xFF, o componente correspondente do vetor retornado será o componente do segundo vetor. Para obter detalhes completos sobre como a máscara de vetor funciona, confira "Comentários".

Normalmente, o vetor usado para Control será a saída de uma função de comparação de vetor (como XMVectorEqual, XMVectorLess ou XMVectorGreater) ou será a saída de XMVectorSelectControl.

Valor retornado

Retorna o resultado da seleção por componente.

Comentários

Se qualquer bit de Control for definido, o bit correspondente da V2 será usado; caso contrário, o bit correspondente da V1 será usado. O pseudocódigo a seguir demonstra a operação da função:

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;

A construção manual de um vetor de controle não é necessária. Há duas maneiras simples de construir um vetor de controle apropriado:

  • Usando a função XMVectorSelectControl para construir um vetor de controle.

    Consulte Usando XMVectorSelect e XMVectorSelectControl para obter uma demonstração de como essa função pode ser usada.

  • O vetor de controle pode ser construído usando a constante XM_SELECT_[0,1] (consulte Constantes da Biblioteca DirectXMath). Por exemplo, em pseudocódigo, uma instância de Control com os elementos :
       Control = { XM_SELECT_0,   XM_SELECT_1,   XM_SELECT_0,   XM_SELECT_1 }
    

    retornaria um resultado de vetor com os seguintes componentes de V1 e V2

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

Requisitos de plataforma

Microsoft Visual Studio 2010 ou Microsoft Visual Studio 2012 com o SDK do Windows para Windows 8. Com suporte para aplicativos da área de trabalho Win32, aplicativos da Windows Store e aplicativos Windows Phone 8.

Requisitos

   
Plataforma de Destino Windows
Cabeçalho directxmath.h (inclua DirectXMath.h)

Confira também

Funções de vetor de componentes

XMVectorSelectControl