【问题标题】:How to read pixel colors using SDL2?如何使用 SDL2 读取像素颜色?
【发布时间】:2017-07-07 14:37:58
【问题描述】:

我想加载一个 png 图像,并获取其中一些像素的颜色(32 位 RGBA 格式)。我已经搜索了很多,但还没有找到一个很好的解决方案。

我发现,使用SDL_LockTexture 进行像素操作。但不想改变图像,只是读取它的一些像素。

【问题讨论】:

  • SDL 有什么特别的原因吗?

标签: image sdl sdl-2


【解决方案1】:

由于您没有指定,我假设您正在使用 SDL_image 加载图像。因此IMG_Load 是一个很好的讨论对象。
正如您从链接中看到的那样,它返回一个SDL_Surface(您可能希望将其转换为纹理,但您不需要这样做来读取它的像素)。
有了这样的对象,您可以使用:

*SDL_LockSurface:

使用此函数设置直接访问像素的表面。

*SDL_UnlockSurface:

使用该函数在直接访问像素后释放一个表面。

文档还指出:

在调用 SDL_LockSurface() / SDL_UnlockSurface() 之间,您可以使用存储在 surface->format 中的像素格式写入和读取surface->pixels。

像素和格式都供您使用。它看起来像一个很好的候选人来做你要求的事情。


但是……

我想加载一个 png 图片,[...]

请注意,IMG_LoadPNG_RW 返回 SDL_Surface 以及 IMG_Load

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2013-05-07
    相关资源
    最近更新 更多