SDL_SetTextureAlphaMod 对 SDL_RENDERER_ACCELERATED 没有影响

SDL_SetTextureAlphaMod has no effect with SDL_RENDERER_ACCELERATED

上下文

我有一个加载了 SDL2 的图像。我可以用 SDL_RenderCopySDL_RenderCopyEx 毫无问题地显示它。我现在想更改图像的不透明度。

我试过的

我根据文档尝试使用 SDL_SetTextureAlphaMod

SDL_SetTextureAlphaMod(my_texture, 122);

它不工作。我试着把它放在 SDL_RenderClear 之前、SDL_RenderClear 之后甚至 SDL_RenderCopy 之后。 None 其中有效。

在那之后,我尝试将我的渲染器从 SDL_RENDERER_ACCELERATED 更改为 SDL_RENDERER_SOFTWARE 并且......它成功了。但是,它显然比 SDL_RENDERER_ACCELERATED.

我必须补充一点,我对 SDL_RENDERER_ACCELERATED 没有任何错误。没有错误但没有结果。

我想做什么

我想要一种使用 SDL_RENDERER_ACCELERATED 而不是 SDL_RENDERER_SOFTWARE 来更改图像不透明度的方法。

编辑:

我尝试使用 SDL_Image,现在我只有在加载 BMP 图像时遇到问题。我想我应该将 BMP 转换成另一种格式。有什么想法吗?

我在 Windows 和 Linux 上都有问题,我使用的是 SDL 2.0.5。

我只需要补充:

SDL_SetTextureBlendMode(my_texture, SDL_BLENDMODE_BLEND);

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