Используйте XMVECTOR в качестве члена класса

Я знаю, что XMVECTOR должен быть выровнен по 16 байтов и, следовательно, не должен быть членом класса (если я не гарантирую выравнивание). Тем не менее, я могу сделать что-то подобное?

class A
{
public:
XMVECTOR vect;
};

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

0

Решение

Компилятор, вероятно, будет использовать movaps для реализации присваивания, что не удастся из-за выравнивания на большинстве процессоров.

Чтобы сделать это не требующим выравнивания, используйте:

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

Это компилируется в единую программу.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]