Опитвам се да използвам XMVECTOR като член на класа за ограничителна кутия, тъй като правя много изчисления, но използвам XMFLOAT3 само веднъж на кадър, така че ограничителната кутия има метод, който ми дава, че е център в XMFLOAT3 , в противен случай той остава в XMVECTOR; Класът е decared с __declspec(align(16)) и работи в режим на отстраняване на грешки. Въпреки това в режим на освобождаване той се срива в момента, в който го задам на нещо:
Box& Box::operator=(const Box& box)
{
_center = box._center;
_extents = box._extents;
return *this;
}
Винаги, когато правя:
Box A;
Box B;
A = B;
Той се срива, като ми дава 0xC0000005: Местоположение за четене при нарушение на достъпа 0x00000000. Също така се срива, когато го създам като указател:
Box* A = new Box();
Това е конструктора:
Box::Box()
{
center = XMVectorZero();
extents = XMVectorSplatOne();
}
Отново това работи добре в режим Debug, но в Release се срива. Какво може да се промени в Release mode, което би генерирало невалиден код? Трябва ли да направя нещо друго, освен да подравня полето към 16 байта?
Box
клас. DirectXMath включваBoundingBox
вече вDirectXCollision.h
заглавка. - person Chuck Walbourn   schedule 05.08.2015