2015-04-24 41 views
2

我正在用Open GL ES 2.0構建iOS應用程序。簡單的繪圖應用。OpenGL與透明背景混合?

如果我在一個不透明度值小於1的清晰framebuffer的頂部繪製,我究竟混合了什麼?

一些設置:

如果我有一個幀緩衝絕對清晰的彩色清除...

glClearColor(0.0, 0.0, 0.0, 0.0); 
glClear(GL_COLOR_BUFFER_BIT) 

具有調設置如下:

glEnable(GL_BLEND); 
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 
[self render] 
glDisable(GL_BLEND); 

然後我畫一個簡單的與50%不透明度相比。說...

gl_FragColor = vec4(1.0, 0.0, 0.0, 0.5); 

我會期待什麼顏色?

這個問題的真正應用是我想將一些東西繪製成半透明的視圖。也就是說,我真的希望我的GL代碼在iOS中與我的視圖UNDERNEATH混合。如果有人對此有更具體的建議,我也很樂意聽到!

回答

1

由此產生的顏色將是您用紅色繪製的顏色,以及50%的不透明度。如果您的GL視圖位於另一個視圖之上(並且不是不透明),則結果將與您在其他視圖頂部的任何其他含有50%的不透明度內容的視圖相同。 glBlendFunc等僅影響您視圖中的GL繪圖;它們不會影響它如何與其他視圖合成。

+0

是的,這證實了我的想法。你會介意查看另一個更加明確的問題嗎? http://stackoverflow.com/questions/29854332/ios-opengl-es-view-not-blending-correctly-when-composited-with-background – Herm