我想加载一个PNG图像,并获取它的一些像素的颜色(以32位RGBA格式)。我搜索了很多,但没有找到一个好的工作解决方案。如何使用SDL2读取像素颜色?
我发现,使用SDL_LockTexture
进行像素处理。但不想改变图像,只需读取一些像素即可。
我想加载一个PNG图像,并获取它的一些像素的颜色(以32位RGBA格式)。我搜索了很多,但没有找到一个好的工作解决方案。如何使用SDL2读取像素颜色?
我发现,使用SDL_LockTexture
进行像素处理。但不想改变图像,只需读取一些像素即可。
因为您没有指定,我假设您使用SDL_image
加载图像。因此IMG_Load
是一个很好的候选人讨论。
正如您从链接中看到的那样,它会返回一个SDL_Surface
(您可能希望将其转换为纹理,但不需要这样做即可读取其像素)。
有了这样一个对象,你可以使用:
使用此功能可设置一个表面直接访问像素。
使用此功能后,直接访问像素释放的表面。
的文档状态也是:
调用之间SDL_LockSurface()/ SDL_UnlockSurface(),可以写入和从表面 - >像素读,使用存储在表面 - >像素格式格式。
像素和格式都在您的处置。它看起来是一个很好的候选人,可以按照你的要求去做。
但是......
我想加载PNG图像,[...]
注意IMG_LoadPNG_RW
返回SDL_Surface
以及IMG_Load
。
SDL的任何特定原因? –