SDL: IMG_load возвращает неверные данные

Проблема возникает из-за функции "IMG_load" SDL_image с языком C. Это не вызывает ошибок во время выполнения, но когда дело доходит до строки

SDL_Surface* image1 = IMG_Load("image.bmp");

функция возвращает данные, которые я не могу использовать: например, SDL_BlitSurface(image1, NULL, screen, &position) не буду ничего делать Тем не менее, он отлично работает при использовании функции SDL_LoadBMP.Я использовал отладчик, чтобы попытаться понять разницу между данными, возвращаемыми двумя функциями:

Вот что возвращает IMG_Load("image.bmp"):

{ //Doesn't work
      flags = 0, 
      format = 0x3c07c0, 
      w = 40, 
      h = 40, 
      pitch = 120, 
      pixels = 0x3c07f0, 
      offset = 0, 
      hwdata = 0x0, 
      clip_rect = {
          x = 0, 
          y = 0, 
          w = 0, 
          h = 0
      }, 
      unused1 = 0, 
      locked = 40, 
      map = 0x28, 
      format_version = 3939000, 
      refcount = 1
}

И вот что возвращает SDL_LoadBMP("image.bmp"):

{ //Works fine
    flags = 0,
    hwdata = 0x0, 
    clip_rect = {
        x = 0, 
        y = 0, 
        w = 40, 
        h = 40
    }, 
    unused1 = 0, 
    locked = 0, 
    map = 0x3458e8, 
    format_version = 7, 
    refcount = 1
}

(Обратите внимание, что изображение такое же, и это квадрат 40x40px).

Почему я не могу использовать SDL_BlitSurface на SDL_Surface, возвращаемом функцией IMG_Load?

редактировать: вы также должны знать, что это первый раз, когда функция из пакета SDL_Image используется в программе.

0 ответов

Другие вопросы по тегам