2017-10-08 118 views
-3

有一个网站,shadertoy.com我可以很容易地测试glsl代码。现在我想玩我的摄像头。我的一个必需步骤是将低通帧之间renderred图像:我如何获得glsl中的前一帧数据?

void mainImage(out vec4 fragColor, in vec2 fragCoord) 
{ 
    vec2 uv = fragCoord.xy/iResolution.xy; 
    fragColor.rgb = prevColor.rgb*0.9 + texture(iChannel0, uv).rgb*0.1; 
} 

新的网络摄像头帧位于iChannel0质感;但prevColor - 我不能得到..我在哪里可以得到先前renderred帧?或者我如何存储渲染的fragColor.rgb数据,使其在传递之间“生存”?

+0

它在CPU端代码上完成....参见'glReadPixels','FBO',渲染到纹理等...重复没有接受的答案,但答案是正确的,你不能在着色器中做到这一点。由于您抓取网络摄像头图像,所以您可以直接将它们存储到纹理(txr0或txr1)中并进行类似双缓冲的交换... – Spektre

回答

0

重复的this,也没有接受的答案。

啊好吧,我设法找到了我自己的。它被称为“backbuffer”,这里是demo我找到了。

这里,on stackoverflow were answers,现在它们已经过时; 功能在不久之前就已实施。现在有可能。