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) |