2014-12-28 6 views
-1

Теперь я работаю над проектом, который применяет сглаживание шума на изображениях с помощью WebGL. Теперь я хотел адаптировать его к видео, используя видео как текстуру вместо старого образа. Примеры учебников, приведенные Firefox (https://developer.mozilla.org/en-US/docs/Web/WebGL/Animating_textures_in_WebGL), также напоминают очарование.WebGl - Видео Текстурирование остается в первом кадре

Но, что должно случиться, всегда бывает: когда вы пытаетесь, он никогда не работает - видео остается в первом кадре, а звук начинает нормально воспроизводиться. Я попытался исправить это, захватив еще какой-то код из WebGL Video Demo Firefox, а затем запустил веб-сайт, чтобы найти что-то похожее на мою проблему. Поэтому я думаю, что это не проблема с видео, но да, когда WebGL обрабатывает фреймы. И это кажется довольно структурным, потому что у меня нет ошибок, когда я запускаю его на консоли Firefox. Я также пробовал разные устройства (MacOSX, Ubuntu, Windows 8) с Firefox и Chrome.

var videoElement; 

function load() { 
    clearInterval(timer); 
    var canvas = document.getElementById("canvas"); 

    videoElement = document.getElementById("video"); 

... конец нагрузки() функции ...

 drawScene(); 

     initTexture(); 

     updateTexture(); 


     timer = setInterval(fr, 500); 
     time = new Date().getTime(); 
     animation = "animate"; 
     anim(); 
    } 

... объявляя текстурных переменные и функции ...

var my_texture; 

    function initTexture() { 
    my_texture = gl.createTexture(); 
    gl.bindTexture(gl.TEXTURE_2D, my_texture); 
    gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true); 

    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); 
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); 

    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); 
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); 

    gl.bindTexture(gl.TEXTURE_2D, null); 
} 


    function startVideo() { 
    videoElement.play(); 
    intervalID = setInterval(drawScene, 15); 
} 

function videoDone() { 
    clearInterval(intervalID); 
}  

    function updateTexture() { 
    gl.bindTexture(gl.TEXTURE_2D, my_texture); 
    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, videoElement); 
} 

Я чувствую, как advance() и composite() функции должны быть частью проблемы. Конечно, вы можете проверить весь проект в этом репозитории GitHub: https://github.com/crocuta/thequietworld/blob/master/videoshading-0-6.html

Есть ли кто-нибудь, кто знает, что не так? Видео является неотъемлемой частью моего проекта, и я как-то застревал в нем видео.

ответ

0

Попробуйте изменить updateTexture в начале каждой ничьей

Смежные вопросы