2015-09-26 76 views
2

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

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

如何在2种纹理上实现混合,以便将具有0个alpha的像素视为透明而不是将其转换为黑色像素?发生什么事?纹理忽略Alpha值?

回答

3

这对于混合模式下式:

SDL.org: SDL_BlendMode

并且这通过混合(对OpenGL具有各自的组合两个纹理的方法的视觉的例子,但其结果应为相同的几个模式SDL工具):

StackExchange GameDev: OpenGL Blending GUI Textures: Answer 1

SDL_BLENDMODE_BLEND中有一个(1-alpha)术语,而如果alpha为0附近,将接近1,W这可能会导致不透明,你期望透明度。它取决于你使用哪个作为src,哪个作为dest使用。

(编号:我只是张贴这个评论,但我没有声望呢。)