在SDL2中混合纹理

  • 本文关键字:纹理 混合 SDL2 sdl-2
  • 更新时间 :
  • 英文 :


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

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

我如何完成2个纹理的混合,以这样一种方式,像素与0 alpha将被视为透明,而不是变成黑色像素?发生了什么?纹理是否忽略alpha值?

这是混合模式的公式:

SDL.org SDL_BlendMode

,这是通过混合结合两种纹理的每种方式的可视化示例(对于openGL,但对于SDL实现的几种模式,结果应该是相同的):

StackExchange GameDev: OpenGL混合GUI纹理:答案1

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

(注:我只是想发表评论,但我还没有名气)

最新更新