如何使用Photoshop的屏幕混合使用glBlendFunc(OpenGL ES 1.x)?

时间:2010-07-15 08:51:29

标签: iphone opengl-es screen framebuffer glblendfunc

我有一个简单的单通道(8位)位图,只有亮度数据,我希望将它与现有的framebufer 混合,就像在Photoshop中使用屏幕混合模式一样。

因此,源的白色像素(255)应为白色,源的50%灰色像素(128)应使帧缓冲像素亮起50%,而源的黑色像素应仅保留结果。我是否也必须设置 glColor4f

你能帮我一些 glBlendFunc 专家吗?

2 个答案:

答案 0 :(得分:5)

屏幕混合是 C = S +(1 - S )× D ,所以你想要的是glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR)。如果您引入了Alpha通道,如果您将图像数据保持为预乘格式,则仍应能够获得正确的结果。

答案 1 :(得分:0)

这对我来说对Straight alpha有用。

  • RGB source = SRC_ALPHA
  • alpha source = SRC_ALPHA
  • RGB目的地= ONE
  • alpha destination = ONE_MINUS_SRC_ALPHA