SDL_DisplayFormat与initializer_list崩溃

时间:2016-06-18 03:09:22

标签: c++ sdl

我有一个使用文件路径字符串列表初始化的结构。但是,如果我尝试在从这些字符串创建的SDL_Surfaces上调用SDL_DisplayFormat,则应用程序将无法启动。它没有崩溃,也没有像正常情况那样生成stdout.txt或stderr.txt,它只是没有启动。编译器不会给出任何错误或警告。这是我的代码:

struct Object {

    std::vector<SDL_Surface*> surfaceVector;

    Object(initializer_list<std::string> init) {
        for (auto i : init) {
            SDL_Surface* loadSurface = SDL_LoadBMP(i.c_str());
            surfaceVector.push_back(SDL_DisplayFormat(loadSurface););
            SDL_FreeSurface(loadSurface);
        }
    }

}

如果我没有调用SDL_DisplayFormat,我可以正常访问和blit surfaceVector中的曲面,因此它们似乎正在正确加载。但是,我希望surfaceVector中的曲面采用显示格式。

1 个答案:

答案 0 :(得分:0)

如果您使用的是SDL2,请尝试使用SDL_ConvertSurfaceFormat()代替SDL_DisplayFormat()

SDL在SDL_ConvertSurfaceFormat上的维基页面。