如何在openGL中创建与堆栈对象的非堆叠alpha混合

时间:2011-08-23 20:13:27

标签: iphone opengl-es alphablending

我目前正在使用OpenGL ES 1.1构建iPhone游戏并使用drawTriangleStrip绘制一条围绕屏幕缠绕的大线并经常重叠。

我遇到的问题是我不希望alpha叠加,因为线路重叠。目前我得到像这样的alpha混合:

alpha-stack image

但我真的希望它像这样混合:

alpha-flat image

我尝试过使用glBlendFunc的变体,但我真的没有太多运气。如果你们中的任何一位openGL大师都可以告诉我你将如何实现上述融合,这将是非常棒的。

2 个答案:

答案 0 :(得分:3)

您正尝试在背景上对三张图片进行Alpha混合。您需要将三个图像绘制到一个画布上,没有Alpha混合,然后将该画布在背景上进行Alpha混合。

答案 1 :(得分:0)

所以你希望它融入背景,但只有在背景中混合还没有发生?

也许你可以通过反向深度排序来实现这一点:渲染所有不透明的东西,然后渲染alpha事物从最近的开始并向下工作到最远。您需要将glDepthFunc()设置为GL_LESS而不是GL_LEQUAL(如果GL-ES中存在该选项...)。然后深度缓冲区应该拒绝alpha片段,如果那里已经存在alpha。