SDL 2.0版本的SDL_DisplayFormatAlpha()? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我开始在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,如果适用的话。

c++ image sdl sdl-2 sdl-1.2
1个回答
3
投票

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

如果你想添加一个alpha通道你想使用SDL_ConvertSurfaceFormat和从IMG_Load加载的表面,例如

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

顺便说一下教程看起来很旧,你可能想查看SDL_Image文档。

© www.soinside.com 2019 - 2024. All rights reserved.