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

标签 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 给我一些建议吗?

最佳答案

这里有一个代码示例,您可以查看: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

关于c++ - 使用 SDL_CreateRGBSurface 创建新的 SDL_Surface 时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15367275/

相关文章:

c++ - 在指定之前使用模板类

c++ - Opencl 独立队列和 openmp 部分中的 clFinish

c++ - SDL_SetColorKey 的问题

Ubuntu 中的 C 和 SDL 未按预期工作

qt - Qt 中的 SDL 音频相当于什么?

c++ - 在 Windows 视频支持下使用 PJSIP

c++ - 如何从使用 QDateTime ISODate 格式创建的字符串创建 boost::posix_time::ptime 对象?

c++ - 指向预分配内存的指针作为输入参数并让函数填充它

c++ - Debug和Release模式下的AES加密问题

c++ - 音频错误使我的C++程序崩溃