2

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

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

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

图像

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

4

1 回答 1

2

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

不过,根据那张图片,您最好只使用 alpha 测试而不是混合。Alpha 测试只是丢弃 alpha 小于阈值的像素。它比混合更便宜,并且您无需对对象进行排序即可使用它。仅当您想使用半透明对象(alpha 介于 0 和 1 之间)时才需要混合。

于 2012-12-01T08:27:24.487 回答