0

我正在尝试显示一个地理复杂、半透明(例如 alpha = 0.5)的对象(地形)。当我渲染这个对象时,这个对象隐藏的正面也将被绘制(就像一座实际上位于另一个后面的小山)。

我想看到我的“地形”对象后面的其他对象,但不想看到我的地形(第二座山)的隐藏面。所以实际上设置“整个”对象的透明度,而不是单个面。

问:如何隐藏半透明物体的“隐藏”正面?

我通过将颜色向量与所需的透明度相乘来设置顶点着色器中的透明度:

fColor = vec4(vColor, 1.0);
fColor *= 0.5;
// fColor goes to fragment shader

GL_DEPTH_TESTGL_LEQUAL使用深度功能激活。

GL_BLENDGL_ONE, GL_ONE_MINUS_SRC_ALPHA使用as 混合功能激活。

我试图GLES20.glDepthMask(false);在绘制之前停用深度缓冲区,但这没有任何区别。

可能我不知道正确的深度缓冲区设置或混合功能。

4

1 回答 1

0

好吧,我想我现在明白了:

实际上我完全可以放弃混合。打开深度测试后,只有前景片段可见(我地形的前山)。通过顶点着色器中的乘法,片段着色器将以所需的透明度绘制这些可见片段(整个地形变为半透明)。

因此,在顶点着色器中进行深度测试、混合、颜色乘法。

于 2013-10-14T13:59:52.550 回答