我正在使用openGL ES2为iOS开发3D游戏。 3D精灵应该是半透明的,alpha通道大约为0.5,以显示背景。 问题是我希望3D精灵的背面完全不可见。换句话说,我只想看到精灵的正面(就像它会出现一个alpha通道= 1),但通过它可以看到背景。 是否有任何混合功能或某些着色器设置才能获得此效果?
答案 0 :(得分:1)
据推测,你的精灵在几何上有纹理(使用三角形或三角形条画的四边形)?您需要做的就是启用面部剔除:
glEnable(GL_CULL_FACE);
这样可以防止任何多边形的“背面”在到达图形管道的混合阶段之前进行绘制 - 所以除了后面的视觉效果之外,还可以获得性能提升。
但您确实需要确保“前”和“后”两侧的定义一致。默认情况下,OpenGL会将顶点以逆时针顺序排列的任何多边形视为正面(反之亦然)。如果启用面部剔除会使所有精灵消失,那是因为它们的顶点按顺时针顺序排列。要么重新排序顶点,要么告诉OpenGL它们都是glFrontFace(GL_CW)
的后退。