c# - OpenGL Quad 仅与背景混合

标签 c# opengl opentk

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

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

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

img

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

最佳答案

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

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

关于c# - OpenGL Quad 仅与背景混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13657690/

相关文章:

c++ - 在 Opengl 中静态绘图

c# - 如何调试 OpenTK?

c# - 如何投影OpenGL控件的顶部和底部区域(圆柱投影)?

c# - 为什么我的 PNG 纹理不透明?

c# - 执行并行分解时发生溢出异常

opengl - 为什么对动态对象使用顶点缓冲区对象?

c# - 在列表中添加对象的两个变量

opengl - 如果绘制的对象使用相同的顶点位置,如何确保绘制的对象遮挡另一个对象?

c# - 从巨大的数据库表中读取

c# - SVN 凭据