在SDl2中混合纹理

时间:2015-09-26 04:14:49

标签: sdl-2

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

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

如何在2个纹理上实现混合,使得具有0 alpha的像素将被视为透明而不是转换为黑色像素?怎么了?纹理是否忽略了alpha值?

1 个答案:

答案 0 :(得分:4)

这有混合模式的公式:

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:我只是发表评论作为评论,但我还没有声誉。)