0

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

4

1 回答 1

1

大概你的精灵被纹理化到几何体上(使用三角形或三角形条绘制的四边形)?您需要做的就是启用面部剔除:

glEnable(GL_CULL_FACE);

这将防止在任何多边形进入图形管道的混合阶段之前绘制它的“背面”——因此除了之后的视觉效果之外,您还可以获得性能优势。

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

于 2013-09-06T00:13:54.833 回答