この問題は、言語 C を使用した SDL_image の "IMG_load" 関数から発生します。実行中にエラーは発生しませんが、行になると
SDL_Surface* image1 = IMG_Load("image.bmp");
関数は、使用できないデータを返します。たとえば、SDL_BlitSurface(image1, NULL, screen, &position)何もしません。ただし、SDL_LoadBMP.
デバッガーを使用して、2 つの関数によって返されるデータの違いを理解しようとした関数を使用すると、正常に動作します。
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 パッケージの関数がプログラムで使用されるのはこれが初めてであることも知っておく必要があります。