我正在使用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中的视图下的视图混合。如果有人对此有更具体的建议,我也很乐意听到它!
答案 0 :(得分:1)
产生的颜色将是您用红色绘制的颜色,具有50%的不透明度。如果您的GL视图位于另一个视图的顶部(并且不是不透明的),则结果将与您在另一个视图之上的任何其他具有50%-peracity的红色内容所获得的结果相同。 glBlendFunc
等仅影响视图中的GL绘图;它们不会影响它与其他视图的合成方式。