使用SDL_CreateRGBSurface创建新SDL_曲面时遇到的困难 我在C++中创建了一个基本的基于控制台的图像处理工具,迄今为止已经找到了在RGB值上运行的函数,超级简单!p>

使用SDL_CreateRGBSurface创建新SDL_曲面时遇到的困难 我在C++中创建了一个基本的基于控制台的图像处理工具,迄今为止已经找到了在RGB值上运行的函数,超级简单!p>,c++,sdl,C++,Sdl,我现在想做的是创建模糊、锐化和调整图像大小的函数。我知道为了做到这一点,我必须将新像素映射到新图像。我在使用此内置SDL函数创建新的空白曲面时遇到了一点问题,我打算将新像素映射到该曲面上: SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); 我的程序的其余部分使用Uint

我现在想做的是创建模糊、锐化和调整图像大小的函数。我知道为了做到这一点,我必须将新像素映射到新图像。我在使用此内置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 = SDL_CreateRGBSurface(0,width,height,32,0,0,0,0);
这些标志用于各种用途,但您应该能够将其设置为0。至于深度,这是指你所看到的每像素有多少位。在这个例子中,8*4是32,包括alpha

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

surface->format->BitsPerPixel

这里有一个代码示例,您可以查看:

具体而言,您要查找的线路是:

surface = SDL_CreateRGBSurface(0,width,height,32,0,0,0,0);
这些标志用于各种用途,但您应该能够将其设置为0。至于深度,这是指你所看到的每像素有多少位。在这个例子中,8*4是32,包括alpha

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

surface->format->BitsPerPixel