为了简单起见,我想为我正在处理的项目创建自己的函数。不幸的是,它一直关闭在错误检查之后,我发现它是不能从它加载任何东西的错,这是函数:
//SDL
void IMG_HANDLER::loadImage(const char * file, SDL_Surface *imgSRC)
{
imgSRC = SDL_LoadBMP(file);
if (imgSRC == NULL)
{
printf("Couldn't load IMG \n", stderr);
exit(1);
}
}
void IMG_HANDLER::SetImage(int x, int y, const char *file, SDL_Surface *dest, SDL_Surface *imgSRC)
{
loadImage(file, imgSRC);
SDL_Rect offset;
offset.x=x;
offset.y=y;
SDL_BlitSurface(imgSRC,NULL,dest, &offset);
}
//SFML
bool SpriteLoad::LoadSprite(std::string filename)
{
if (!Image.LoadFromFile(filename.c_str()))
{
printf("Can't load image file", stderr);
exit(1);
return false;
}
Sprite.SetImage(Image);
return true;
}
我对此非常困惑,特别是当代码编译完美时。我该如何解决这个问题?
答案 0 :(得分:1)
暂时忽略SFML代码,我认为有一个问题是
//SDL
void IMG_HANDLER::loadImage(const char * file, SDL_Surface *imgSRC)
{
imgSRC = SDL_LoadBMP(file);
if (imgSRC == NULL)
{
printf("Couldn't load IMG \n", stderr);
exit(1);
}
}
imgSRC
的值永远不会离开loadImage
。您可能希望将imgSRC
作为引用,或者从loadImage
返回值。那就是:
void IMG_HANDLER::loadImage(const char * file, SDL_Surface* &imgSRC)
或:
SDL_Surface *IMG_HANDLER::loadImage(const char * file)
最近有人问{p> This question,应该解释一下这种行为。
就两者都不起作用而言,您可能希望检查图像文件的格式是否合适。