gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:07:13 25 4
gpt4 key购买 nike

为了简单起见,我想为我当前正在处理的项目创建自己的函数。不幸的是,它一直在关闭。经过错误检查,我发现它无法从中加载任何东西,这是函数的错误:

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

我对此感到很困惑,尤其是当代码编译完美时。我该如何解决这个问题?

最佳答案

暂时忽略 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)

This question最近被问到,应该解释这种行为。

至于它们都不起作用,您可能需要检查图像文件的格式是否正确。

关于c++ - 无法使用 SFML 和 SDL 加载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com