我已经使用 OpenTK 和 OpenGL 为游戏建立了一个快速 2D 渲染系统。 我已经使用以下方法设置了透明度:
GL.Enable(EnableCaps.Blend);
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha);
但是,每当我去绘制时(纹理是用 System.Drawing 加载的 png 文件),它只会与我在绘制调用开始时清除的颜色混合:
我刚刚切换到 MonoGame,因为它的 2D 渲染已经经过充分测试
最佳答案
看起来您没有按照正确的顺序绘制。为了获得正确的混合,您需要从后到前对多边形进行排序,以便首先绘制“后面”的任何内容。
不过,根据该图片,您可能会更好地使用 alpha 测试而不是混合。 Alpha 测试只是丢弃 alpha 小于阈值的像素。它比混合更便宜,并且您无需对对象进行排序即可使用它。仅当您想要使用半透明对象(alpha 介于 0 和 1 之间)时才需要混合。
关于c# - OpenGL Quad 仅与背景混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13657690/