【发布时间】:2012-06-24 20:04:48
【问题描述】:
我正在使用 glBlendFunc() 将一张图像合成到另一张图像上,试图近似 Photoshop 的差异合成功能。我希望两个图像中的相似之处是黑色的,而弹出任何不同的东西。
据我了解,glBlendfunc() 与上下文中合成的任何图像相关联。对吗?
【问题讨论】:
标签: opengl opengl-es opengl-3 nsopenglview
我正在使用 glBlendFunc() 将一张图像合成到另一张图像上,试图近似 Photoshop 的差异合成功能。我希望两个图像中的相似之处是黑色的,而弹出任何不同的东西。
据我了解,glBlendfunc() 与上下文中合成的任何图像相关联。对吗?
【问题讨论】:
标签: opengl opengl-es opengl-3 nsopenglview
我真的想不出任何方法可以用 glBlendFunc 做到这一点。你可以使用这样的东西:
glBlendEquation(GL_FUNC_SUBTRACT);
glBlendFunc(GL_ONE, GL_ONE);
但它只有在第二个纹理的大小比第一个更大时才有效(任何负的减法结果都将被钳制为零)。
我建议使用多重采样着色器同时对两个纹理进行采样,并将结果作为绝对差值输出。
gl_FragColor = abs(texture2D(tex1, uv) - texture2D(tex2,uv));
【讨论】: