2017-10-08 8 views
-3

Il existe un site, shadertoy.com où je peux facilement tester le code glsl. Maintenant, je voudrais jouer avec ma webcam. Une étape nécessaire est mon à l'image LowPass renderred entre les images:Comment puis-je obtenir les données d'images précédentes dans 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; 
} 

Nouveau cadre webcam est situé dans la texture iChannel0; mais prevColor - je ne peux pas obtenir .. Où puis-je obtenir le cadre précédemment rendu? Ou comment puis-je stocker des données fragmentées fragColor.rgb, pour le faire "survivre" entre les passes?

+0

il est fait sur le code côté CPU .... voir 'glReadPixels',' FBO', rendu à texture etc ... le doublon n'a pas de réponse acceptée mais les réponses sont correctes, vous ne pouvez pas le faire dans les shaders seulement . Lorsque vous saisissez les images de la Webcam, vous pouvez les stocker directement dans la texture (txr0 ou txr1) et les échanger de la même manière que le double tampon ... – Spektre

Répondre

0

Duplicata de this, également pas de réponse acceptée.

Ah d'accord, j'ai réussi à le découvrir par moi-même. Il est appelé "backbuffer", voici demo que j'ai trouvé.

Ici, on stackoverflow were answers, maintenant ils sont obsolètes; La fonctionnalité a été implémentée il n'y a pas si longtemps. Maintenant c'est possible.