无法使用SFML和SDL加载图像?

时间:2012-04-08 21:32:07

标签: c++ pointers sdl 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);
    }
}


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;
}

我对此非常困惑,特别是当代码编译完美时。我该如何解决这个问题?

1 个答案:

答案 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,应该解释一下这种行为。

就两者都不起作用而言,您可能希望检查图像文件的格式是否合适。