0

我正在使用 glBlendFunc() 将一个图像合成到另一个图像上,试图近似 Photoshop 的差异合成功能。我希望两个图像中的相似之处是黑色的,而弹出任何不同的东西。

据我了解, glBlendfunc() 与上下文中合成的任何图像相关联。那是对的吗?

4

1 回答 1

1

我真的想不出任何办法用 glBlendFunc 做到这一点。你可以使用这样的东西:

glBlendEquation(GL_FUNC_SUBTRACT);
glBlendFunc(GL_ONE, GL_ONE);

但它只有在第二个纹理的大小比第一个更大时才会起作用(任何负的减法结果都将被钳制为零)。

我建议使用多重采样着色器同时对两个纹理进行采样,并将结果作为绝对差异输出。

gl_FragColor = abs(texture2D(tex1, uv) - texture2D(tex2,uv));
于 2012-06-24T20:27:00.133 回答