Исключение памяти при использовании XMFLOAT3 & amp; XMVECTOR

Я пытаюсь реализовать Pitch / Yaw для своего класса Camera в D3D, но моя функция Pitch () выдает «Место чтения нарушения доступа 0x0000008C».

Я немного погуглил и увидел, что не могу использовать XMVECTOR в классе / структуре из-за 16-битного выравнивания. Однако я уже знал это, и я дважды проверил, что он был объявлен как XMFLOAT3, и это было!

Дело в том, что во всех других моих функциях класса Camera (например, обновление матрицы вида, …) нет исключения. Это только в этой функции!

Итак, вот как я объявляю свою переменную класса, которая приводит к сбою функции (хотя все мои переменные приводят к сбою, и они определяются одинаково):

XMFLOAT3 mRight;

Вот как я объявляю функцию Pitch:

void Pitch(float a)
{
//Here it makes my code crash
XMMATRIX R = XMMatrixRotationAxis(XMLoadFloat3(&mRight), a);

//Store and compute
XMStoreFloat3(&mLook, XMVector3TransformNormal(XMLoadFloat3(&mLook), R));
XMStoreFloat3(&mUp, XMVector3TransformNormal(XMLoadFloat3(&mUp), R));
}

Я также использую x86 в качестве архитектуры, хотя x64 дает точно такие же результаты (кроме области памяти: D).
Ни я, ни библиотека DirectXMath не могут получить доступ к значениям x, y и z «mRight». В моем случае «mRight.x» в случае DirectXMath «__m128 x = _mm_load_ss ( &pSource-> x); «.

Некоторые новые результаты отладки:
Это странно случается, когда я вызываю ‘any’ функцию из моего события WM_MOUSEMOVE. Даже моя функция Walk (), которая отлично работает, когда я вызываю ее при нажатии клавиши.

Самая странная вещь!

Спасибо за помощь!

1

Решение

Я знаю свою ошибку! Я дал неверный указатель на мой класс, который использует этот код: D Исправлено

0

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


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector