2012-12-01 32 views
2

我已经为游戏设置了一个使用OpenTK和OpenGL的快速2D渲染系统。 我一直在使用设置透明度:OpenGL Quad只与背景混合

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

但是,每当我去画(纹理加载System.Drawing中PNG文件),它仅与颜色混合我在抽签开始就很清楚拨打:

img

我刚刚结束了在切换到MonoGame,因为它是2D渲染已经充分测试

+1

这个混合模式表示使用目的地的100%来源和100%来源-α,即0%(除非你的图像有一个alpha通道?)。相当于不混合 –

+0

我的图像有一个alpha通道 – CallumDev

+0

抓住吸管,但关闭深度测试? (z缓冲区) –

回答

2

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

尽管如此,您可能更适合使用alpha测试而不是混合。 Alpha测试只是丢弃alpha小于阈值的像素。它比混合更便宜,而且您不需要对对象进行排序就可以使用它。当你想使用半透明物体(0到1之间的alpha)时,你只需要混合。

+0

我画了正方形,然后是文字。另外阿尔法测试使文本倾斜 – CallumDev