DirectX 11: ошибка подтверждения времени выполнения с использованием XMLoadFloat4X4 ()

При попытке сохранить матрицы внутри структуры я получаю сообщение об ошибке Assertion Failure во время выполнения при вызове XMFLOAT4x4* типы из структуры с использованием XMLoadFloat4X4(),

введите описание изображения здесь

Значения просто хранятся как:

XMFLOAT4X4 *f4x4_Scale;
XMFLOAT4X4 *f4x4_Rotation;
XMFLOAT4X4 *f4x4_Translate;
XMFLOAT4X4 *f4x4_ObjectViewSpace;

Предположительно загрузка фактических значений из XMFLOAT4x4* расположение внутри структуры.

Я звоню XMLoadFloat4X4() внутри функции преобразования, структура как таковая:

XMMATRIX Entity::Scale(float x, float y, float z){
XMMATRIX m_Scale = XMLoadFloat4x4(e_Asset.Asset.FileDesc.matrixTransformation.f4x4_Scale);
m_Scale = XMMatrixScaling(x, y, z);
return m_Scale;
}

Разборка показывает разрыв внутри XMLoadFloat4x4() функционировать сам, но я не могу этого понять.
введите описание изображения здесь

Есть ли способ / метод, который я могу использовать для устранения ошибок ошибок утверждения в отношении XMLoadFloat()? (Или действительно хороший материал об ошибках Утверждения) и / или я делаю что-то не так?

Обновить:

Как предположил Чак Уолборн, (XMFLOAT4X4)*pSource указатель для XMLoadFloat4X4() было NULL, удовлетворяющих условиям Асстера для функции. Сначала передаваемый указатель был неинициализирован, а затем я попытался установить указатель [на кучу].

Часы были установлены, и XMFLOAT4X4 значения были инициализированы в матрицу с использованием XMStoreFloat4X4(),

XMMATRIX Identity = XMMatrixIdentity();
XMStoreFloat4x4(&e_Asset.Asset.FileDesc.matrixTransformation.f4x4_Scale, Identity);

Последним виновником был тот факт, что функции преобразования имели так много перегрузок, и я пропустил случайный шаг отладки (я установил новый XMFLOAT4X4 переменная в одной из функций и никогда ее не инициализировал) из ранее. Проблема была решена.

0

Решение

DirectXMath является общим источником в библиотеке, так что вы можете просто войти в функцию в отладчике.

Единственное утверждение в XMLoadFloat4x4 чтобы убедиться, что входной указатель не нулевой:

/------------------------------------------------------------------------------
_Use_decl_annotations_
inline XMMATRIX XMLoadFloat4x4
(
const XMFLOAT4X4* pSource
)
{
assert(pSource);
#if defined(_XM_NO_INTRINSICS_)

Как вы думаете, e_Asset.Asset.FileDesc.matrixTransformation.f4x4_Scale указатель на самом деле установлен здесь?

1

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


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