【问题标题】:Blending textures in SDL2在 SDL2 中混合纹理
【发布时间】:2021-07-26 05:50:00
【问题描述】:

我有 2 个纹理,它们都是使用 SDL_TEXTUREACCESS_STREAMING 标志创建的。他们将混合模式设置为 SDL_BLENDMODE_BLEND。我在每帧中从 2 个不同的表面更新它们。其中之一的 alpha 值大多等于 0(大部分是透明的)。当我将其中一个纹理放在另一个纹理的顶部时,混合不会发生。

例如 - 一个表面的所有像素的 RGBA 值 = 255、255、255、0。当我用它更新纹理并将相同的纹理放在另一个图像的顶部时,我只得到黑色像素。

如何在 2 个纹理上完成混合,以使 alpha 为 0 的像素被视为透明而不是变成黑色像素?怎么了?纹理是否忽略 alpha 值?

【问题讨论】:

    标签: sdl-2


    【解决方案1】:

    这有混合模式的公式:

    SDL.org: SDL_BlendMode

    这有通过混合组合两个纹理的每种方法的视觉示例(对于 openGL,但对于 SDL 实现的少数模式,结果应该相同):

    StackExchange GameDev: OpenGL Blending GUI Textures: Answer 1

    SDL_BLENDMODE_BLEND 中有一个 (1-alpha) 术语,如果 alpha 接近 0,它将接近 1,这可能会导致您期望透明的地方不透明。这取决于您使用哪个作为 src 以及哪个作为 dest。

    (nb:我只是将其作为评论发布,但我还没有声誉。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      相关资源
      最近更新 更多