我希望能够将来自glfx.js的滤镜应用于实时视频。我已经成功地导入并处理了所需的帧,但这种方法效率低下。在我的页面设置中,我执行以下操作:
var fbCanvas = document.getElementById('framebuffer');
var fb = fbCanvas.getContext('2d');
var video = document.getElementById('video');
var output = fx.canvas();
然后,在25hz(视频的播放速率)下,我这样做:
fb.drawImage(video, 0, 0);
var frame = output.texture(fbCanvas);
output.draw(frame).hueSaturation(-0.5, 0).update();
但我希望能够做到这一点:
var frame = output.texture(video);
output.draw(frame).hueSaturation(-0.5, 0).update();
调用 output.texture 只是对 gl.texImage2D 的包装,它似乎只能接受图像或画布——而不是视频元素。
我的问题是,通过执行额外的 drawImage 到隐藏画布,会带来多少性能损失?获取视频帧并将其快速转换为 GL 纹理的最快方法是什么,以便可以在实时运行 GL 着色器?
谢谢。