Начните Sprite C ++ DirectX

0

Любая идея, почему это происходит? Изображение 174551

В моем Main.cpp я просто вызвал функцию следующим образом:

    Character *Police;
    Police = new Character;
    Police->Initialize("Police.png", 50.0f, 50.0f, 64.0f, 63.5f);


    MSG Msg;
        while (GetMessage(&Msg, NULL, 0, 0))
        {
            while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
            {
                if (Msg.message == WM_QUIT) break;
                TranslateMessage(&Msg);
                DispatchMessage(&Msg);
            }
            Inputs->GetInput();
            Graphic->ClearBegin();

            Police->Transform();
            Police->Begin();
            Police->Draw();
            Police->End();

            Graphic->EndPresent();
        }

Я не понимаю, что это за исключением.

  • 0
    Похоже, ваш указатель спрайта не инициализирован!
  • 0
    Я думаю, что в своем заголовке я назвал LPD3DXSPRITE Sprite; затем в конструкторе cpp я установил его в NULL Sprite = NULL;
Теги:
oop
directx

1 ответ

0

Указатель Sprite не инициализирован. Вы видите это в нижней части экрана (Sprite - NULL).

Попытка вызвать функцию для объекта null objject приводит к нарушению доступа.

Попробуйте инициализировать свой спрайт с помощью D3DXCreateSprite() перед его использованием.

  • 0
    void Character::Initialize(string image, float PosX, float PosY, float CenterX, float CenterY) { D3DXCreateTextureFromFile(PULL->getD3ddev(), image.c_str(), &Texture); D3DXCreateSprite(PULL->getD3ddev(), &Sprite); SpritePos = D3DXVECTOR2(PosX, PosY); SpriteCenter = D3DXVECTOR2(CenterX, CenterY); } ли это должно быть?
  • 0
    Вы проверили, что D3DXCreateSprite(PULL->getD3ddev(), &Sprite) возвращает S_OK ?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню