OpenGL 与透明背景混合?

OpenGL Blending with Transparent Background?

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

如果我在不透明度值小于 1 的透明帧缓冲区上绘制,我到底要混合什么?

一些设置:

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

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

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