2017-10-08 4 views
-3

Es gibt eine Website, shadertoy.com, wo ich leicht GSL-Code testen kann. Jetzt würde ich gerne mit meiner Webcam spielen. Ein mein notwendiger Schritt ist renderred Bild zwischen den Bildern zu Tiefpass:Wie kann ich vorherige Rahmendaten in GLSL erhalten?

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; 
} 

Neuer Webcam-Rahmen in iChannel0 Textur befindet; aber prevColor - ich kann nicht bekommen .. Wo kann ich vorher Renderred Frame erhalten? Oder wie kann ich die render fragColor.rgb-Daten speichern, damit sie zwischen den Pässen "überleben"?

+0

es ist auf CPU Seite Code getan .... siehe 'glReadPixels',' FBO', Rendering zu Textur etc ... das Duplikat hat keine akzeptierte Antwort, aber die Antworten dort sind richtig, Sie können dies nicht nur in Shadern tun . Wie Sie die Webcam-Bilder greifen, können Sie sie direkt in Textur (txr0 oder txr1) speichern und ähnlich wie Doppelpufferung tauschen ... – Spektre

Antwort

0

Duplikat this, auch keine Antwort akzeptiert.

Ah okay, ich habe es geschafft, es selbst herauszufinden. Es heißt "Backbuffer", hier ist demo ich habe gefunden.

Hier, on stackoverflow were answers, jetzt sind sie veraltet; Feature wurde vor nicht allzu langer Zeit implementiert. Jetzt ist es möglich.