2015-04-24 38 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