Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SDL_DisplayFormatAlpha()的SDL 2.0版本?_C++_Image_Sdl_Sdl 2_Sdl 1.2 - Fatal编程技术网

C++ SDL_DisplayFormatAlpha()的SDL 2.0版本?

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”

我开始用SDL2.0编程。我希望能够将.PNG文件加载到我的程序中,因为.bmp文件没有.PNG文件的所有整洁功能

我有以下代码来自:

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

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格式。