OpenGL与透明背景混合?

时间:2015-04-24 15:07:34

标签: ios opengl-es blending

我正在使用Open GL ES 2.0构建iOS应用程序。简单的绘图应用程序。

如果我在一个透明的帧缓冲区上绘制,其中一些不透明度值小于一,那我究竟要混合什么呢?

一些设置:

如果我使用绝对清晰的颜色清除帧缓冲区......

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中的视图下的视图混合。如果有人对此有更具体的建议,我也很乐意听到它!

1 个答案:

答案 0 :(得分:1)

产生的颜色将是您用红色绘制的颜色,具有50%的不透明度。如果您的GL视图位于另一个视图的顶部(并且不是不透明的),则结果将与您在另一个视图之上的任何其他具有50%-peracity的红色内容所获得的结果相同。 glBlendFunc等仅影响视图中的GL绘图;它们不会影响它与其他视图的合成方式。