Сбой после m = XMMatrixIdentity()-выравнивание памяти в классах?

Я смотрел учебники в DirectX SDK. Учебник 5 работает нормально, но после того, как я скопировал и разделил код на свои собственные классы, я получил странную ошибку при запуске моего приложения.

Строка:

g_World1 = XMMatrixIdentity();

Из-за этого я получил ошибку в xnamathmatrix.int operator=, которая выглядит так:

XMFINLINE _XMMATRIX& _XMMATRIX::operator=
(
    CONST _XMMATRIX& M
)
{
    r[0] = M.r[0];
    r[1] = M.r[1];
    r[2] = M.r[2];
    r[3] = M.r[3];
    return *this;
}

И сообщение об ошибке:

Access violation reading location 0xffffffff

Я где-то читал, что это может быть вызвано чем-то, связанным с XMFLOAT4X4/XMMATRIX :

Have you considered using XMFLOAT4X4 to store the matrix, and only using XMMATRIX?

. Но я думаю, что уже использую XMMATRIX.

MyClass.h:

private:
    XMMATRIX g_World1;

MyClass.cpp:

void init(){
   g_World1 = XMMatrixIdentity();
}

Я не думаю, что мне следует менять XMMATRIX g _World1; на XMFLOAT4X4 g _World1, потому что он выдает такие ошибки, как:

error C2679: binary '=' : no operator found which takes a right-hand operand of type 'XMMATRIX' (or there is no acceptable conversion)

9
задан Cœur 17 March 2018 в 12:04
поделиться