一些背景:这里的图形新手,刚刚在浏览器中用mrdoob的优秀three.js将我的脚趾浸入3D世界。我打算尽快通过http://learningwebgl.com/的所有内容:)
我想知道如何重新创建类似于以下内容的内容: http://yooouuutuuube.com/v/?width=192&height=120&vm=29755443&flux=0&direction=rand
我对yooouuutuuube如何运作的天真理解如下:
我想在WebGL中执行此操作而不是使用Canvas,因此我可以利用着色器进行后处理(噪声和颜色通道分离以模拟色差)。
以下是我到目前为止的截图:
这适用于显示单帧视频,但我想看看是否可以一次显示多个帧而无需添加其他几何体。
执行此类任务的最佳方式是什么?我是否应该更详细地研究/调查这些概念?
答案 0 :(得分:4)
<html>
<body>
<script>
var video = document.createElement( 'video' );
video.autoplay = true;
video.addEventListener( 'loadedmetadata', function ( event ) {
var scale = 0.5;
var width = video.videoWidth * scale;
var height = video.videoHeight * scale;
var items_total = ( window.innerWidth * window.innerHeight ) / ( width * height );
for ( var i = 0; i < items_total - 1; i ++ ) {
var canvas = document.createElement( 'canvas' );
canvas.width = width;
canvas.height = height;
canvas.context = canvas.getContext( '2d' );
canvas.context.scale( scale, scale );
document.body.appendChild( canvas );
}
setInterval( function () {
var child = document.body.insertBefore( document.body.lastChild, document.body.children[ 1 ] ); // children[ 0 ] == <script>
child.context.drawImage( video, 0, 0 );
}, 1000 / 30 );
}, false );
video.src = 'video.ogv';
</script>
</body>
</html>