XMVectorSelect 函数 (directxmath.h)
在两个输入向量之间执行按组件选择,并返回生成的向量。
语法
XMVECTOR XM_CALLCONV XMVectorSelect(
[in] FXMVECTOR V1,
[in] FXMVECTOR V2,
[in] FXMVECTOR Control
) noexcept;
参数
[in] V1
要比较的第一个向量。
[in] V2
要比较的第二个向量。
[in] Control
用于从 V1 或 V2 中选择矢量分量的矢量掩码。 如果 Control 的组件为零,则返回的向量对应的组件将是第一个向量的组件。 如果 control 的一 个组件0xFF,则返回的矢量的相应组件将是第二个向量的组件。 有关矢量掩码工作原理的完整详细信息,请参阅“备注”。
通常,用于 Control 的向量将是向量比较函数 ((如 XMVectorEqual、XMVectorLess 或 XMVectorGreater) )的输出,或者是 XMVectorSelectControl 的输出。
返回值
返回按组件选择的结果。
备注
如果设置了任何 给定的控制位 ,则使用 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;
不需要手动构造控制向量。 有两种简单的方法来构造适当的控制向量:
-
使用 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 SDK for Windows 8 的 Microsoft Visual Studio 2010 或 Microsoft Visual Studio 2012。 支持 Win32 桌面应用、Windows 应用商店应用和 Windows Phone 8 应用。要求
目标平台 | Windows |
标头 | directxmath.h (包括 DirectXMath.h) |