我是SDL的新手,在我的程序的这一部分中,我希望能够更改现有曲面的图像。我的问题是,这会自动卸载上一个图像还是我必须使用SDL_FreeSurface()然后重新加载表面?我不想最终加载大量不需要加载的图片。视觉解释:
string path = "Image.png";
SDL_Surface* loadedSurface = IMG_Load((path.c_str());
如果我再次使用loadedSurface使用不同的图像,是否会卸载原始图像?
path = "NewImage.png";
loadedSurface = IMG_Load(path.c_str());
或者每次加载新图像时我都必须这样做:
SDL_FreeSurface(loadedSurface);
path = "NewImage.png";
SDL_Surface* loadedSurface = IMG_Load(path.c_str());
这可能没问题,我只是不确定每个循环创建一个新表面是否会比另一个更简单,更容易。谢谢!
答案 0 :(得分:1)
在加载新曲面并覆盖旧指针之前,您需要调用SDL_FreeSurface
。
考虑一下:第二次调用IMG_Load
时,SDL只是加载图像,并且不知道你要对返回的指针做什么。因此它无法释放任何已经加载的曲面。你必须自己做。