(openGL)如何显示两个渲染过程之间的差异,以查看它们彼此接近的程度

时间:2017-03-20 15:13:49

标签: opengl glsl

我有一个显示颜色表面的程序。然后通过一些方法(这是我的论文的重点,但在这里不重要)我密切重建颜色表面。所以这给了我两个颜色表面的副本,我想找到差异'在两个输出之间,看它们彼此有多接近。所以松散地说我想渲染像

这样的东西
abs(render_1 - render_2)

由于两个颜色表面的结构复杂,我无法直接计算渲染前的差异。有什么方法可以使用GLSL着色器来做到这一点?我希望可以先渲染一个曲面,然后在第二个渲染过程中使用一个着色器来查询渲染位置已经存在的颜色,但我不认为这是可能的。有关如何做到这一点的想法?

2 个答案:

答案 0 :(得分:1)

有可能。您可以渲染第一个曲面到帧缓冲区,然后在secord渲染过程中查询此纹理的像素值。由于颜色是4d矢量,因此您可以计算从纹理获取的第1个像素与在着色器中计算的第2个像素之间的距离。由于已发现差异,您可以计算并可视化SNR。

答案 1 :(得分:0)

使用FBO将每个版本渲染到自己的纹理中,然后在第三遍中,您可以评估渲染图片中的值之间的差异(使用着色器)。