问题来自 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 包中的函数。