2017-02-17 99 views
1

我想加载一个PNG图像,并获取它的一些像素的颜色(以32位RGBA格式)。我搜索了很多,但没有找到一个好的工作解决方案。如何使用SDL2读取像素颜色?

我发现,使用SDL_LockTexture进行像素处理。但不想改变图像,只需读取一些像素即可。

+0

SDL的任何特定原因? –

回答

1

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

* SDL_LockSurface

使用此功能可设置一个表面直接访问像素。

* SDL_UnlockSurface

使用此功能后,直接访问像素释放的表面。

的文档状态也是:

调用之间SDL_LockSurface()/ SDL_UnlockSurface(),可以写入和从表面 - >像素读,使用存储在表面 - >像素格式格式。

像素和格式都在您的处置。它看起来是一个很好的候选人,可以按照你的要求去做。


但是......

我想加载PNG图像,[...]

注意IMG_LoadPNG_RW返回SDL_Surface以及IMG_Load