This question already has answers here:
SDL_DisplayFormat not declared in this scope: Using SDL2
                                
                                    (2个答案)
                                
                        
                                去年关闭。
            
                    
我开始使用SDL 2.0进行编程。我希望能够将.PNG文件加载到程序中,因为.bmp文件没有.png文件具有所有巧妙的功能。

我有来自http://www.sdltutorials.com/sdl-image的以下代码:

SDL_Surface* loadSurf(char* File) {
SDL_Surface* Surf_Temp = NULL;
SDL_Surface* Surf_Return = NULL;

if((Surf_Temp = IMG_Load(File)) == NULL) {
    return NULL;
}

Surf_Return = SDL_DisplayFormatAlpha(Surf_Temp);
SDL_FreeSurface(Surf_Temp);

return Surf_Return;
}


该函数的重点是加载图像,您可以通过执行以下操作来调用它:

SDL_Surface* character = loadSurf("sprite.png");


但是,当我运行它时,在“ Surf_Return = SDL_DisplayFormatAlpha(Surf_Temp);
错误行:使用未声明的标识符'SDL_DisplayFormatAlpha'

我认为这样做的原因是因为该代码是为SDL 1.2编写的,而我正在使用SDL 2.0。有没有办法将此功能转换为SDL 2.0?

我正在运行Mac OSX 10.13.2(如果适用)。

最佳答案

我认为他们从SDL2中删除了SDL_DisplayFormatAlpha(和SDL_DisplayFormat)

例如,如果要添加Alpha通道,则要对从IMG_Load加载的曲面使用SDL_ConvertSurfaceFormat

// Returns a new surface with an alpha channel added
SDL_Surface *new_s = SDL_ConvertSurfaceFormat(surf, SDL_PIXELFORMAT_RGBA8888, 0);


通过本教程看起来很老的方式,您可能需要研究SDL_Image文档。

关于c++ - SDL 2.0版本的SDL_DisplayFormatAlpha()? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49120011/

10-09 02:34