【问题标题】:SDL2 Texture Render target doesn't have alpha transparencySDL2 纹理渲染目标没有 Alpha 透明度
【发布时间】:2015-04-22 20:14:03
【问题描述】:

我在使用 SDL2 对 C 进行编程时遇到了问题。我已经渲染了一个纹理简单的正方形图像,这些正方形在中心是透明的。但是当我绘制渲染它们的纹理时,它们不是透明的。我什至尝试使用 SDL_SetTextureAlphaMod() 更改渲染纹理的透明度,但它没有改变任何东西。如果我更改正在渲染的纹理(正方形)上的 alpha。它们变得更暗,但它们仍然覆盖了它们背后的任何东西。所以我愿意接受建议。

这是我降低了正方形纹理上的 alpha 的图像:http://imgur.com/W8dNbBY

【问题讨论】:

    标签: c ubuntu sdl-2


    【解决方案1】:

    首先,如果你想要一个透明的图像,你在 SDL2 中有两种方法。


    • 方法一:(静态方法)

    使用图片编辑软件,直接修改那里的alpha值,就可以继续SDL2了。


    方法二:(动态法)

    SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);//这将纹理设置为混合模式

    alpha = xx //这部分应该是你改变 alpha 值的地方。您可以制作淡入淡出效果等...只需将更改放在此处即可。

    SDL_SetTextureAlphaMod(纹理, alpha); //将alpha设置到纹理中

    SDL_RenderCopy(渲染器, 纹理, NULL, &rect); //用新的alpha重新绘制图像~

    【讨论】:

    • 好的,谢谢。当我将混合模式设置为 SDL_BLENDMODE_BLEND 时它起作用了。方法一对我来说不是一个选项,因为纹理是在运行时通过渲染生成的。
    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多