SDL_SetTextureAlphaMod对SDL_RENDERER_ACCELERATED无效

时间:2017-05-17 17:06:53

标签: c opacity sdl-2

上下文

我有一个装有SDL2的图像。我可以SDL_RenderCopySDL_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。

1 个答案:

答案 0 :(得分:2)

我只需要添加:

SDL_SetTextureBlendMode(my_texture, SDL_BLENDMODE_BLEND);

要在设置SDL_SetTextureAlphaMod之前使其与任何图像一起使用。