1

问题来自 SDL_image 的“IMG_load”函数,使用语言 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的正方形)。

为什么我不能在函数 IMG_Load 返回的 SDL_Surface 上使用 SDL_BlitSurface?

编辑:您还必须知道这是第一次在程序中使用 SDL_Image 包中的函数。

4

0 回答 0