0

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

class A
{
    public:
    XMVECTOR vect;
};

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

1 回答 1

0

编译器可能会使用 movaps 来实现分配,这会由于大多数 CPU 上的对齐而失败。

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

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

这编译为单个 movups。

于 2014-06-26T19:24:47.363 回答