使用SDL_CreateRGBSurface创建新SDL_曲面时遇到的困难 我在C++中创建了一个基本的基于控制台的图像处理工具,迄今为止已经找到了在RGB值上运行的函数,超级简单!p>
我现在想做的是创建模糊、锐化和调整图像大小的函数。我知道为了做到这一点,我必须将新像素映射到新图像。我在使用此内置SDL函数创建新的空白曲面时遇到了一点问题,我打算将新像素映射到该曲面上:使用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_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