openGL ES 2.0中3D精灵的混合功能

时间:2013-08-19 11:16:49

标签: ios opengl-es opengl-es-2.0 blend

我正在使用openGL ES2为iOS开发3D游戏。 3D精灵应该是半透明的,alpha通道大约为0.5,以显示背景。 问题是我希望3D精灵的背面完全不可见。换句话说,我只想看到精灵的正面(就像它会出现一个alpha通道= 1),但通过它可以看到背景。 是否有任何混合功能或某些着色器设置才能获得此效果?

1 个答案:

答案 0 :(得分:1)

据推测,你的精灵在几何上有纹理(使用三角形或三角形条画的四边形)?您需要做的就是启用面部剔除:

glEnable(GL_CULL_FACE);

这样可以防止任何多边形的“背面”在到达图形管道的混合阶段之前进行绘制 - 所以除了后面的视觉效果之外,还可以获得性能提升。

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