我已经为游戏设置了一个使用OpenTK和OpenGL的快速2D渲染系统。 我使用以下方式设置了透明度:
GL.Enable(EnableCaps.Blend);
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha);
但是,每当我去绘制(纹理是一个用System.Drawing加载的png文件)时,它只会与我在绘制调用开始时清除的颜色混合:
我刚刚切换到MonoGame,因为它的2D渲染已经过充分测试
答案 0 :(得分:2)
看起来你没有按照正确的顺序画画。要获得正确的混合,您需要从后到前对多边形进行排序,以便首先绘制“后面”的任何内容。
虽然基于该图片,您可能更好地使用alpha测试而不是混合。 Alpha测试只丢弃alpha小于阈值的像素。它比混合便宜,您不需要对对象进行排序即可使用它。当您想要使用半透明对象(0到1之间的alpha)时,您只需要混合。