2013-10-14 45 views
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作爲混合功能被激活。

我試圖在繪製之前關閉深度緩衝區GLES20.glDepthMask(false);,但這並沒有什麼區別。

也許我不明白正確的深度緩衝區設置或混合功能。

回答

0

嗯,我想我現在弄明白了:

其實我可以混合在所有辭職。隨着深度測試開啓,只有前景碎片可見(我的地形的前山)。隨着頂點着色器中的乘法,片段着色器將以期望的透明度繪製這些可見片段(整個地形變爲半透明)。

因此,深度測試,融合,頂點着色器中的色彩倍增。

相關問題