我目前正在使用OpenGL ES 1.1构建iPhone游戏并使用drawTriangleStrip
绘制一条围绕屏幕缠绕的大线并经常重叠。
我遇到的问题是我不希望alpha叠加,因为线路重叠。目前我得到像这样的alpha混合:
但我真的希望它像这样混合:
我尝试过使用glBlendFunc
的变体,但我真的没有太多运气。如果你们中的任何一位openGL大师都可以告诉我你将如何实现上述融合,这将是非常棒的。
答案 0 :(得分:3)
您正尝试在背景上对三张图片进行Alpha混合。您需要将三个图像绘制到一个画布上,没有Alpha混合,然后将该画布在背景上进行Alpha混合。
答案 1 :(得分:0)
所以你希望它融入背景,但只有在背景中混合还没有发生?
也许你可以通过反向深度排序来实现这一点:渲染所有不透明的东西,然后渲染alpha事物从最近的开始并向下工作到最远。您需要将glDepthFunc()
设置为GL_LESS
而不是GL_LEQUAL
(如果GL-ES中存在该选项...)。然后深度缓冲区应该拒绝alpha片段,如果那里已经存在alpha。