2013-08-19 60 views
0

我正在为openGL ES2开发iOS游戏。 3D精灵应该是半透明的,大约0.5的alpha通道才能显示背景。 问题是我想要3D精灵的背面完全不可见。换句话说,我只想看到精灵的正面(就像alpha通道= 1时显示的那样),但背景可见。 有没有任何混合函数或一些着色器设置来获得这种效果?openGL ES 2.0中3D精灵的混合函数

回答

1

大概你的精灵纹理到几何上(用三角形或三角形条绘制的四边形)?所有你需要做的是让脸剔除:

glEnable(GL_CULL_FACE); 

这将防止任何绘制多边形它获取到图形流水线的混合阶段之前井的“背面” - 让您得到在性能取胜除了你之后的视觉效果。

尽管如此,您确实需要确保您的“前”和“后”两侧的定义一致。默认情况下,OpenGL会考虑顶点逆时针顺序为正面的多边形(反之亦然)。如果启用面部剔除会使所有精灵消失,这是因为它们的顶点顺时针排列。要么重新排列顶点,要么告诉OpenGL,它们全都是向后的glFrontFace(GL_CW)

+0

谢谢rickster,我完全忘了GL_CULL_FACE!你的建议是诀窍。 – Alex79