我知道glBlendFunc是指定像素混合模式的函数调用。
我可以在Photoshop中执行 Multiply Mode ,其公式为
C = A * B
其中A是源像素,B是目标像素,C是最终结果。
使用 glBlendFunc(GL_DST_COLOR,GL_ZERO)我会得到这种效果。
现在我的问题是如何使用 Screen Mode ?它的公式是:
C = 1 - (1 - A) * (1 - B)
答案 0 :(得分:7)
没有检查,但是要走的路是如下。
OpenGL的内置计算看起来像:
C = A*s + B*d
您可以选择s和d。
一些代数给了我们
C = 1 - (1 - A) * (1 - B) =
= 1 - (1 - B) + A*(1 - B) =
= A*(1 - B) + B
让
s = 1 - B
d = 1
我们得到了我们想要的价值。所以这应该有效:
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ONE);