XMVectorSwizzle 函数 (directxmath.h)

重排向量。

语法

XMVECTOR XM_CALLCONV XMVectorSwizzle(
  [in] FXMVECTOR V,
  [in] uint32_t  E0,
  [in] uint32_t  E1,
  [in] uint32_t  E2,
  [in] uint32_t  E3
) noexcept;

参数

[in] V

要重排的向量。

[in] E0

描述要放置在重排向量的 x 分量的 V 的哪个组件的索引。 值 0 选择 x 分量,1 选择 y 分量,2 选择 z 分量,3 选择 w 分量。

[in] E1

描述要放置在重排向量的 y 分量的 V 的哪个分量的索引。 值 0 选择 x 分量,1 选择 y 分量,2 选择 z 分量,3 选择 w 分量。

[in] E2

描述要放置在重排向量的 z 分量的 V 的哪个分量的索引。 值 0 选择 x 分量,1 选择 y 分量,2 选择 z 分量,3 选择 w 分量。

[in] E3

描述要放置在重排向量的 w 分量的 V 的哪个分量的索引。 值 0 选择 x 分量,1 选择 y 分量,2 选择 z 分量,3 选择 w 分量。

返回值

返回重排 XMVECTOR

备注

以下代码演示了如何使用此函数。

XMVECTOR v = XMVectorSet( 10.0f, 20.0f, 30.0f, 40.0f );
XMVECTOR result = XMVectorSwizzle(v, 3, 3, 0, 2 );

重排矢量 (结果) 为 <40.0f、40.0f、10.0f、30.0f>。

XM_SWIZZLE_XXM_SWIZZLE_YXM_SWIZZLE_ZXM_SWIZZLE_W 是计算结果分别为 0、1、2 和 3 的常量,用于 XMVectorSwizzle。 这与 XM_PERMUTE_0XXM_PERMUTE_0YXM_PERMUTE_0ZXM_PERMUTE_0W相同。

对于常量索引 (E0、E1、E2、E3) ,使用 XMVectorSwizzle 的模板形式要高效得多:


template<uint32_t SwizzleX, uint32_t SwizzleY, uint32_t SwizzleZ, uint32_t SwizzleW>
    XMVECTOR XMVectorSwizzle(FXMVECTOR V)

Example: XMVectorSwizzle< 3, 3, 0, 2>(v);
   

平台要求

带有 Windows SDK for Windows 8 的 Microsoft Visual Studio 2010 或 Microsoft Visual Studio 2012。 支持 Win32 桌面应用、Windows 应用商店应用和 Windows Phone 8 应用。

要求

   
目标平台 Windows
标头 directxmath.h (包括 DirectXMath.h)

另请参阅

组件向量函数

XMVectorPermute