C++ SDL_DisplayFormatAlpha()的SDL 2.0版本?
我开始用SDL2.0编程。我希望能够将.PNG文件加载到我的程序中,因为.bmp文件没有.PNG文件的所有整洁功能 我有以下代码来自: 函数的要点是加载一个图像,您可以通过执行以下操作来调用它:C++ SDL_DisplayFormatAlpha()的SDL 2.0版本?,c++,image,sdl,sdl-2,sdl-1.2,C++,Image,Sdl,Sdl 2,Sdl 1.2,我开始用SDL2.0编程。我希望能够将.PNG文件加载到我的程序中,因为.bmp文件没有.PNG文件的所有整洁功能 我有以下代码来自: 函数的要点是加载一个图像,您可以通过执行以下操作来调用它: SDL_Surface* character = loadSurf("sprite.png"); 但是,当我运行它时,“Surf_Return=SDL_DisplayFormatAlpha(Surf_Temp)”; ”“行。错误是:使用未声明的标识符“SDL\u DisplayFormatAlpha”
SDL_Surface* character = loadSurf("sprite.png");
但是,当我运行它时,“Surf_Return=SDL_DisplayFormatAlpha(Surf_Temp)”;
”“行。错误是:使用未声明的标识符“SDL\u DisplayFormatAlpha”
我想这是因为代码是为SDL1.2编写的,我使用的是SDL2.0。有没有办法将此函数转换为SDL2.0
如果适用的话,我正在运行Mac OSX 10.13.2。我认为他们从SDL2中删除了SDL_DisplayFormatAlpha(和SDL_DisplayFormat) 例如,如果要添加要与从IMG_加载的曲面一起使用的alpha通道
// Returns a new surface with an alpha channel added
SDL_Surface *new_s = SDL_ConvertSurfaceFormat(surf, SDL_PIXELFORMAT_RGBA8888, 0);
顺便说一句,该教程看起来非常古老,您可能需要查看SDL_图像文档。我认为他们从SDL2中删除了SDL_DisplayFormatAlpha(和SDL_DisplayFormat) 例如,如果要添加要与从IMG_加载的曲面一起使用的alpha通道
// Returns a new surface with an alpha channel added
SDL_Surface *new_s = SDL_ConvertSurfaceFormat(surf, SDL_PIXELFORMAT_RGBA8888, 0);
顺便说一句,该教程看起来非常古老,您可能希望查看SDL_图像文档。使用“``SDL_Surface*Surf_Return=IMG_Load(File);```从文件中加载IMG。然后我相信您希望将其转换为纹理,在这种情况下:
SDL\u CreateTextureFromSurface
应该可以。你想实现什么?另外:如果你也在寻找SDL2的教程,我发现Lazy Foo教程在过去非常有用:@pappix我正在尝试从我的计算机加载一个.PNG文件,将其转换为纹理,然后使用SDL_RenderCopy()和RenderPresent()在我的屏幕上显示它@pappix我这样做的原因是我可以加载具有透明背景的图像,这样我就不会在精灵周围有任何白色框。使用“`SDL\u Surface*Surf\u Return=IMG\u load(File);`从文件中加载IMG。然后我相信您希望将其转换为纹理,在这种情况下:SDL\u CreateTextureFromSurface
应该可以。你想实现什么?另外:如果你也在寻找SDL2的教程,我发现Lazy Foo教程在过去非常有用:@pappix我正在尝试从我的计算机加载一个.PNG文件,将其转换为纹理,然后使用SDL_RenderCopy()和RenderPresent()在我的屏幕上显示它@pappix我这样做的原因是我可以加载具有透明背景的图像,这样我就不会在精灵周围有任何白色框。看起来不错!我只是有几个问题。因此,SDL_DisplayFormatAlpha()将更改图像格式,使其具有alpha层(尽我所知),SDL_ConvertSurfaceFormat()基本上做相同的事情吗?如果我加载一个带有透明背景的.png文件,我要使用什么样的像素格式?谢谢你的帮助。@Shades我想SDL会检测到这种格式,所以在使用alpha通道加载PNG的情况下,默认情况下你会得到RGBA格式。看起来不错!我只是有几个问题。因此,SDL_DisplayFormatAlpha()将更改图像格式,使其具有alpha层(尽我所知),SDL_ConvertSurfaceFormat()基本上做相同的事情吗?如果我加载一个带有透明背景的.png文件,我要使用什么样的像素格式?谢谢你的帮助。@Shades我想SDL会检测到这种格式,所以在使用alpha通道加载PNG的情况下,默认情况下你会得到RGBA格式。