SDL_SetTextureAlphaMod 对 SDL_RENDERER_ACCELERATED 没有影响
SDL_SetTextureAlphaMod has no effect with SDL_RENDERER_ACCELERATED
上下文
我有一个加载了 SDL2 的图像。我可以用 SDL_RenderCopy
或 SDL_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
之前。
上下文
我有一个加载了 SDL2 的图像。我可以用 SDL_RenderCopy
或 SDL_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
之前。