使用XMVECTOR作为类成员

时间:2014-01-04 13:03:57

标签: c++ directxmath

我知道XMVECTOR必须是16字节对齐的,因此不应该是类的成员(除非我确保对齐)。但是,我可以这样做吗?

class A
{
    public:
    XMVECTOR vect;
};

void fun(void)
{
    A a;
    XMVECTOR localVect = a.vect;
    // can I now use localVect correctly?
}

1 个答案:

答案 0 :(得分:0)

编译器可能会使用movaps来实现赋值,这会因大多数CPU上的对齐而失败。

使这不需要对齐的方法是使用:

class A { public: XMFLOAT4 vect; } ... XMVECTOR localVec = XMLoadFloat4( &a.vect );

这会编译为单个movup。