C ++ Нарушение доступа к месту записи в цикл for - PullRequest
0 голосов
/ 23 мая 2018

Я пытался заставить Bounding Box работать, чтобы внедрить отбраковку в моем двигателе.Но как только я запускаю решение, в функции преобразования Bounding Box появляется ошибка времени выполнения Access Access.

void BoundingBox::Transform(D3DXVECTOR3 pos, D3DXVECTOR3 rot, D3DXVECTOR3 sca) {

D3DXQUATERNION rotationQuaternion;

D3DXMatrixTransformation(&mat, NULL, NULL, &sca, NULL, 
    D3DXQuaternionRotationYawPitchRoll(&rotationQuaternion, 
    D3DXToRadian(rot.x), D3DXToRadian(rot.y), D3DXToRadian(rot.z)), &pos);

    for (int k = 0; k < 8; k++)
    {
        D3DXVec3Transform(&transVertex[k], &vertexes[k], &mat);

        /*this->*/xMin = min(transVertex->x, /*this->*/xMin);
        /*this->*/yMin = min(transVertex->y, /*this->*/yMin);
        /*this->*/zMin = min(transVertex->z, /*this->*/zMin);

        /*this->*/xMax = max(transVertex->x, /*this->*/xMax);
        /*this->*/yMax = max(transVertex->y, /*this->*/yMax);
        /*this->*/zMax = max(transVertex->z, /*this->*/zMax);
    }}

Кто-нибудь знает, почему это происходит?

Вот чтоошибка говорит: «Исключение, выданное в 0x0F5E20E6 (D3DX9_43.dll) в bushRanger.exe: 0xC0000005: Место записи нарушения прав доступа 0x00000038.»

1 Ответ

0 голосов
/ 23 мая 2018

Я обнаружил, что произошло, камера создает трещину, но у нее нет ограничивающего прямоугольника, и она по-прежнему использует ту же функцию Move (), что и остальные композиции.

    void Composite::Move(D3DXVECTOR3 trasl, D3DXVECTOR3 escal, D3DXVECTOR3 rot) 
{
Component::Move(trasl, escal, rot);
/*D3DXMATRIX rotMat = rotXMat * rotYMat * rotZMat;
thyMatrix = scaMat * rotMat * transMat;*/
D3DXQUATERNION rotationQuaternion;
D3DXMatrixTransformation(&thyMatrix, NULL, NULL, &escal, NULL, D3DXQuaternionRotationYawPitchRoll(&rotationQuaternion, D3DXToRadian(rot.x), D3DXToRadian(rot.y), D3DXToRadian(rot.z)), &trasl);
laCajita->Transform(_trasl, _escal, _rot); // and here is a non existant bounding box
UpdateBoundingBox();
}

Здеськогда он касается функции Move камеры, которая является составной, он вызывает несуществующую ограничивающую рамку.

Что ж, люди, спасибо за помощь в комментариях, я буду более внимательным с отладчиком изсейчас, прежде чем отправлять вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...