我有一个装有SDL2的图像。我可以SDL_RenderCopy
或SDL_RenderCopyEx
毫无问题地显示它。我现在想要改变图像的不透明度。
我根据文档尝试使用SDL_SetTextureAlphaMod
。
SDL_SetTextureAlphaMod(my_texture, 122);
没用。我试图在SDL_RenderClear
之前,SDL_RenderClear
之后,甚至在SDL_RenderCopy
之后将它放在SDL_RENDERER_ACCELERATED
之前。这些都没有奏效。
之后,我尝试将我的渲染器从SDL_RENDERER_SOFTWARE
更改为SDL_RENDERER_ACCELERATED
并且......它有效。但是,它明显慢于SDL_RENDERER_ACCELERATED
。
我必须补充一点,SDL_RENDERER_ACCELERATED
我没有任何错误。没有错误,但没有结果。
我想用SDL_RENDERER_SOFTWARE
代替SDL_Image
来改变图像的不透明度。
修改
我尝试使用{{1}},现在我只在加载BMP图像时遇到问题。我想我应该将BMP转换成另一种格式。有什么想法吗?
我在Windows和Linux上都有这个问题,我使用的是SDL 2.0.5。
答案 0 :(得分:2)
我只需要添加:
SDL_SetTextureBlendMode(my_texture, SDL_BLENDMODE_BLEND);
要在设置SDL_SetTextureAlphaMod
之前使其与任何图像一起使用。