XMVectorSelect 関数 (directxmath.h)
2 つの入力ベクトル間でコンポーネントごとの選択を実行し、結果のベクターを返します。
構文
XMVECTOR XM_CALLCONV XMVectorSelect(
[in] FXMVECTOR V1,
[in] FXMVECTOR V2,
[in] FXMVECTOR Control
) noexcept;
パラメーター
[in] V1
比較する最初のベクトル。
[in] V2
比較する 2 番目のベクトル。
[in] Control
V1 または V2 からベクトル コンポーネントを選択するために使用されるベクター マスク。 Control のコンポーネントが 0 の場合、返されるベクターの対応するコンポーネントが最初のベクターのコンポーネントになります。 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] 定数を使用して構築できます ( 「DirectXMath ライブラリ定数」を参照)。 たとえば、擬似コードでは、 要素を持つ Control のインスタンスが次のようになります。
Control = { XM_SELECT_0, XM_SELECT_1, XM_SELECT_0, XM_SELECT_1 }
は、V1 と V2 の次のコンポーネントを含むベクター Result を返します
Result = { V1.X, V2.Y, V1.Z, V2.W }
プラットフォームの要件
Windows 8 用 Windows SDK を使用した Microsoft Visual Studio 2010 または Microsoft Visual Studio 2012。 Win32 デスクトップ アプリ、Windows ストア アプリ、Windows Phone 8 アプリでサポートされます。要件
対象プラットフォーム | Windows |
ヘッダー | directxmath.h (DirectXMath.h を含む) |