常量XMVECTOR实例应使用XMVECTORF32类型。 以下是DirectX SDK的CascadedShadowMaps11示例中的一些示例:
static const XMVECTORF32 g_vHalfVector = { 0.5f, 0.5f,0.5f, 0.5f };
static const XMVECTORF32 g_vZero = { 0.0f, 0.0f, 0.0f,0.0f };
XMVECTORF32 vRightTop = {vViewFrust.RightSlope,vViewFrust.TopSlope,1.0f,1.0f};
XMVECTORF32 vLeftBottom = {vViewFrust.LeftSlope,vViewFrust.BottomSlope,1.0f,1.0f};
实质上,我们使用XMVECTORF32,只要我们想要使用初始化语法.XMVECTORF32是一个带有XMVECTOR转换运算符的16字节对齐结构; 它被定义如下:
// 常量的转换类型
__declspec(align(16)) struct XMVECTORF32{union
{
float f[4];
XMVECTOR v;
};
inline operator XMVECTOR() const { return v; }
inline operator const float*() const { return f; }
#if !defined(_XM_NO_INTRINSICS_) &&defined(_XM_SSE_INTRINSICS_)
inline operator __m128i() const { return_mm_castps_si128(v); }
inline operator __m128d() const { return_mm_castps_pd(v); }
#endif
};
您还可以使用XMVECTORU32创建一个整数数据的常量XMVECTOR:
static const XMVECTORU32 vGrabY = {0x00000000,0xFFFFFFFF,0x00000000,0x00000000};
1390

被折叠的 条评论
为什么被折叠?



