使用SDL_CreateRGBSurface创建新的SDL_Surface时遇到困难

时间:2013-03-12 16:50:55

标签: c++ sdl

我正在用c ++创建一个基于控制台的基本图像处理工具,到目前为止已经发现创建可以非常容易地操作RGB值的函数了!

我现在要做的是创建模糊,锐化和调整图像大小的功能。我知道为了做到这一点,我必须将新像素映射到新图像。我使用这个内置的SDL函数来创建一个新的空白表面,我打算在其上映射新的像素时遇到一些问题:

SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);

我的程序的其余部分使用Uint8*而不是Uint32,所以我不确定这会如何影响诉讼程序。此外,我不是100%确定所有参数以及它们的用途和用途:即标志和深度。

有人可以就如何使用此功能正确创建新的SDL_Surface给我一些建议吗?

1 个答案:

答案 0 :(得分:6)

这里有一个代码示例,您可以查看:http://wiki.libsdl.org/moin.fcg/SDL_CreateRGBSurface

具体来说,您要寻找的行是:

surface = SDL_CreateRGBSurface(0,width,height,32,0,0,0,0);

标志用于各种事情,但你应该可以将它设置为0。至于深度,这指的是您正在查看的每个像素的位数。所以在这种情况下,8 * 4是32(包括alpha)。

我认为你已经加载了图像。如果是这样,您可以使用此加载的图像来获取每像素的位数:

surface->format->BitsPerPixel