XMVectorSelect

2 つの入力ベクトル間で各要素の選択を行い、結果をベクトルで返します。

構文

XMVECTOR XMVectorSelect(         XMVECTOR V1,         XMVECTOR V2,         XMVECTOR Control)

パラメーター

  • V1
    [in] 比較する第 1 のベクトル

  • V2
    [in] 比較する第 2 のベクトル

  • Control
    [in] V1 または V2 からベクトル要素を選択する際に使用するベクトル マスク。Control の要素が 0 の場合、返されるベクトルの対応する要素は第 1 のベクトルの要素になります。Control の要素が 0xFF の場合、返されるベクトルの対応する要素は第 2 のベクトルの要素になります。ベクトル マスクの動作の詳細については、「解説」を参照してください。

    一般に、Control に使用されるベクトルは、ベクトル比較関数 (XMVectorEqualXMVectorLessXMVectorGreater など) または XMVectorSelectControl のいずれかの出力になります。

戻り値

要素ごとの選択の結果が返されます。

解説 

Control のいずれかのビットがセットされている場合、V2 の対応するビットが使用されます。ビットがセットされていなければ、V1 の対応するビットが使用されます。次の擬似コードは、この関数の処理を表したものです。

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;

制御ベクトルを手動で構築する必要はありません。適切な制御ベクトルを構築するには、次のように 2 つの方法があります。

  1. XMVectorSelectControl 関数を使用して制御ベクトルを構築します。

    この関数の実際の使用例については、「XMVectorSelect および XMVectorSelectControl の使用」を参照してください。

  2. XM_SELECT_[0,1] 定数を使用して制御ベクトルを構築します (「XNA Math ライブラリ コンパイラの定数」を参照)。次の疑似コード例は、各要素が含まれた Control のインスタンスを示しています。

       Control = { XM_SELECT_0,   XM_SELECT_1,   XM_SELECT_0,   XM_SELECT_1 }

    これにより、V1V2 の次の要素を含むベクトル Result が返されます。

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

要件

ヘッダー: xnamath.h で宣言されています。

関連項目

XMVectorSelectControl