【问题标题】:Difficulties while using SDL_CreateRGBSurface to create a new SDL_Surface使用 SDL_CreateRGBSurface 创建新的 SDL_Surface 时遇到的困难
【发布时间】:2013-03-13 03:53:25
【问题描述】:

我正在用 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 的建议?

【问题讨论】:

    标签: c++ sdl


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      相关资源
      最近更新 更多