我在 iOS 上遇到了 OpenGL ES 2.0 的半透明问题。我的场景比较简单。它由一个立方体网格组成,其中一些应该是实心的,而其他的应该是半透明的。我从下面的代码开始设置 OpenGL。
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
由于深度测试和剔除,这会导致某些角度的透明度不正确。请看下面的两张图片
我试图禁用卷曲和深度测试并启用 alpha 测试。结果是正确的透明度,但没有纹理(见下图)。
//glEnable(GL_CULL_FACE);
//glEnable(GL_DEPTH_TEST);
//glDepthFunc(GL_LEQUAL);
glAlphaFunc(GL_GREATER, 0.5);
glEnable(GL_ALPHA_TEST);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
我正在使用 GLKit 加载纹理并使用 GLKBaseEffect 来渲染场景。是否有人提示如何在所有视角下以正确的透明度实现与第一张图像相同的结果?谢谢 :)