OpenGL Quad仅与背景混合

时间:2012-12-01 08:15:24

标签: c# opengl opentk

我已经为游戏设置了一个使用OpenTK和OpenGL的快速2D渲染系统。 我使用以下方式设置了透明度:

GL.Enable(EnableCaps.Blend);
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha);

但是,每当我去绘制(纹理是一个用System.Drawing加载的png文件)时,它只会与我在绘制调用开始时清除的颜色混合:

img

我刚刚切换到MonoGame,因为它的2D渲染已经过充分测试

1 个答案:

答案 0 :(得分:2)

看起来你没有按照正确的顺序画画。要获得正确的混合,您需要从后到前对多边形进行排序,以便首先绘制“后面”的任何内容。

虽然基于该图片,您可能更好地使用alpha测试而不是混合。 Alpha测试只丢弃alpha小于阈值的像素。它比混合便宜,您不需要对对象进行排序即可使用它。当您想要使用半透明对象(0到1之间的alpha)时,您只需要混合。