Unable to load images using SDL_LoadBMP
我在SDL1.2方面的经验非常有限,并且我也在尝试迁移到SDL2.0。
这是一个简单的井字游戏,下一个类在初始化时加载我的图像。我无法确切指出我的问题,但是我退出了,代码为-1,因为它无法加载我的位图。我想要的结果是返回TRUE。
代码最初来自http://www.sdltutorials.com/sdl-tutorial-tic-tac-toe,但是我进行了一些更改,以便迁移到SDL2.0。
1 2 3 4 5 6 7 8 9 10 11 12 13 | bool CApp::OnInit() { if(SDL_Init(SDL_INIT_EVERYTHING) < 0) { return false; } SDL_CreateWindowAndRenderer(600, 600, SDL_WINDOW_RESIZABLE, &sdlWindow, &sdlRenderer); if((Surf_Grid = CSurface::OnLoad("./gfx/grid.bmp")) == NULL) { return false; } if((Surf_O = CSurface::OnLoad("./gfx/o.bmp")) == NULL) { return false; } if((Surf_X = CSurface::OnLoad("./gfx/x.bmp")) == NULL) { return false; } Reset(); return true;} |
我认为问题出在CSurface :: Onload(),所以我在函数中插入了一个断点,但是项目用完了却没有达到我的断点。似乎CSurface :: Onload()函数似乎没有被调用。
CSurface :: Onload():
1 2 3 4 5 6 7 8 9 | SDL_Surface* CSurface::OnLoad(char* File) { SDL_Surface* Surf_Temp = NULL; SDL_Surface* Surf_Return = NULL; if((Surf_Temp = SDL_LoadBMP(File)) == NULL) { return NULL; } Surf_Return = SDL_ConvertSurfaceFormat(Surf_Temp,SDL_PIXELFORMAT_UNKNOWN,0); /* OUTDATED SDL 1.2 : Surf_Return = SDL_DisplayFormat(Surf_Temp); */ SDL_FreeSurface(Surf_Temp); return Surf_Return;} |
任何想法我在这里做错了吗?
花了一些时间,但最终发现问题出在函数SDL_ConvertSurfaceFormat()的像素格式字段上
我几乎不知道这些字段是什么意思,但是可以通过使用SDL_PIXELFORMAT_ARGB8888
来解决问题。
http://wiki.libsdl.org/SDL_ConvertSurfaceFormat
已解决。 =)
如果您在Windows环境中进行编译,是否尝试在路径表示法中使用反斜杠而不是正斜杠来进行