问题来自" IMG_load"用语言C表达SDL_image。 它在执行期间不会引发错误,但是当涉及到行
时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
}
(注意图像是相同的,它是40x40像素的正方形)。
为什么我不能在IMG_Load函数返回的SDL_Surface上使用SDL_BlitSurface?
编辑:您还必须知道这是第一次在程序中使用SDL_Image包中的函数。