关于C#:无法使用SDL_LoadBMP加载图像

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环境中进行编译,是否尝试在路径表示法中使用反斜杠而不是正斜杠来进行CSurface::OnLoad()方法调用?