【问题标题】:Does loading an image in the same surface free the old image?将图像加载到同一表面是否会释放旧图像?
【发布时间】:2017-02-02 14:01:42
【问题描述】:

我是 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());

这可能没问题,我只是不确定每个循环创建一个新表面是否会比另一种更简单的方法更密集。谢谢!

【问题讨论】:

    标签: c++ visual-c++ sdl


    【解决方案1】:

    在加载新表面并覆盖旧指针之前,您需要调用 SDL_FreeSurface

    想一想:在您第二次调用IMG_Load 时,SDL 只是在加载图像,并不知道您将如何处理返回的指针。所以它不能释放任何已经加载的表面。你必须自己做。

    【讨论】:

    • 好的,有道理。感谢您的回答和时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多