XMVectorSelect 函数 (directxmath.h)

在两个输入向量之间执行按组件选择,并返回生成的向量。

语法

XMVECTOR XM_CALLCONV XMVectorSelect(
  [in] FXMVECTOR V1,
  [in] FXMVECTOR V2,
  [in] FXMVECTOR Control
) noexcept;

参数

[in] V1

要比较的第一个向量。

[in] V2

要比较的第二个向量。

[in] Control

用于从 V1V2 中选择矢量分量的矢量掩码。 如果 Control 的组件为零,则返回的向量对应的组件将是第一个向量的组件。 如果 control 的一 个组件0xFF,则返回的矢量的相应组件将是第二个向量的组件。 有关矢量掩码工作原理的完整详细信息,请参阅“备注”。

通常,用于 Control 的向量将是向量比较函数 ((如 XMVectorEqual、XMVectorLessXMVectorGreater) )的输出,或者是 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 }
    

    将返回具有以下 V1V2 组件的向量 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)

请参阅

分量向量函数

XMVectorSelectControl