0

XMVECTOR は 16 バイトでアラインする必要があるため、クラスのメンバーにするべきではありません (アラインメントを確保しない限り)。しかし、私はこのようにsthを行うことができますか?

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 に答える