【问题标题】:OpenGL Blending with Transparent Background?OpenGL与透明背景混合?
【发布时间】:2015-07-03 06:25:27
【问题描述】:

我正在使用 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 中的视图 UNDERNEATH 的视图融为一体。如果有人对此有更具体的建议,我也很想听听!

【问题讨论】:

    标签: ios opengl-es blending


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多