我在 SDL1.2 方面的经验非常有限,我也在尝试迁移到 SDL2.0。这是一个简单的井字游戏,下面的类在初始化时加载我的图像。我无法准确指出我的问题,但我得到了一个带有代码 -1 的退出,因为它无法加载我的位图。我想要的结果是返回 TRUE。代码最初来自http://www.sdltutorials.com/sdl-tutorial-tic-tac-toe但我为迁移到 SDL2.0 做了一些更改。
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():
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;}
知道我在这里做错了什么吗???