SDL_DISPLAYFORMAT使用initializer_list崩溃

SDL_DisplayFormat crashes with initializer_list

本文关键字:list 崩溃 initializer 使用 DISPLAYFORMAT SDL      更新时间:2023-10-16

我有一个我正在使用filepath字符串列表初始化的结构。但是,如果我尝试在这些字符串创建的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,我可以像正常情况一样访问和闪烁表面表面,因此它们似乎正在正确加载。但是,我希望表面向量中的表面以显示格式。

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

SDL_ConvertSurfaceFormat上的SDL的Wiki页面。