上下文
我有一张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,现在只在加载BMP图像时有问题。我想我应该把BMP转换成另一种格式。知道吗?
我在Windows和Linux上都有这个问题,我使用的是SDL 2.0.5。

最佳答案

我不得不补充:

SDL_SetTextureBlendMode(my_texture, SDL_BLENDMODE_BLEND);

在设置SDL_SetTextureAlphaMod之前,让它处理任何图像。

关于c - SDL_SetTextureAlphaMod对SDL_RENDERER_ACCELERATED无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44030993/

10-09 09:40