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 に使用されるベクトルは、ベクトル比較関数 (XMVectorEqual、XMVectorLess、XMVectorGreater など) または 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 つの方法があります。
XMVectorSelectControl 関数を使用して制御ベクトルを構築します。
この関数の実際の使用例については、「XMVectorSelect および XMVectorSelectControl の使用」を参照してください。
XM_SELECT_[0,1] 定数を使用して制御ベクトルを構築します (「XNA Math ライブラリ コンパイラの定数」を参照)。次の疑似コード例は、各要素が含まれた Control のインスタンスを示しています。
Control = { XM_SELECT_0, XM_SELECT_1, XM_SELECT_0, XM_SELECT_1 }
これにより、V1 と V2 の次の要素を含むベクトル Result が返されます。
Result = { V1.X, V2.X, V1.Z, V2.W }
要件
ヘッダー: xnamath.h で宣言されています。