Javascript Webgl动画纹理性能与canvas drawImage性能

Javascript Webgl动画纹理性能与canvas drawImage性能,javascript,html,canvas,webgl,Javascript,Html,Canvas,Webgl,我正在开始一个项目,我想从一个单一的视频切片部分,并重新绘制到屏幕上不同的对象这些部分。我知道我可以使用drawImage将视频的各个部分重新绘制到画布元素上。在进行研究时,似乎可以对WebGL中的动画纹理执行相同的操作。有人知道使用WebGL动画纹理而不是drawImage是否会提高性能吗 WebGL在性能上优于2D画布,但是,由于您处理的是视频,那么问题是使用WebGL是否有任何意义 考虑到NTSC世界中的视频很少超过30 FPS,PAL 25 FPS,您将有一个很好的时间预算来分割视频并重

我正在开始一个项目,我想从一个单一的视频切片部分,并重新绘制到屏幕上不同的对象这些部分。我知道我可以使用drawImage将视频的各个部分重新绘制到画布元素上。在进行研究时,似乎可以对WebGL中的动画纹理执行相同的操作。有人知道使用WebGL动画纹理而不是drawImage是否会提高性能吗

WebGL在性能上优于2D画布,但是,由于您处理的是视频,那么问题是使用WebGL是否有任何意义

考虑到NTSC世界中的视频很少超过30 FPS,PAL 25 FPS,您将有一个很好的时间预算来分割视频并重新绘制它们。另外,考虑到drawImage是一种非常快速的操作,它也有硬件支持,而且没有硬件支持也可以工作,您可以将其与WebGL进行权衡,WebGL不能在所有硬件(如低端消费者和旧硬件)上工作,在撰写本文时,对它的支持各不相同

在这种情况下,我最初会坚持使用2D画布。如果需要将切片包装和投影到3D对象上,则2D画布不是最佳选择。您可以直接在画布元素上使用CSS 3D变换,例如四边形变换。如果需要不同的转换,只需使用不同的画布元素,每个元素代表一个片段

顺便说一句,这里的一个技巧是创建一个屏幕外的画布,首先将框架绘制到其中。通过这种方式,您不必从运行视频的元素中抓取,这可能是一项昂贵的操作,具体取决于浏览器将如何抓取视频位图数据

例如:

var ctx=canvas.getContext'2d', sw=32, frame=document.createElementcanvas,//帧缓冲区 fctx=frame.getContext2d; 框架宽度=500; 框架高度=280; video.AddEventListener播放、切片和骰子,错误; 函数切片和骰子{ fctx.drawImagevideo,0,0;//视频到帧缓冲区,使其更平滑 //一些杂项切片 forvar x=0;x然而,WebGL在性能方面比2D画布有优势,因为您处理的是视频,所以问题是使用WebGL是否有任何意义

考虑到NTSC世界中的视频很少超过30 FPS,PAL 25 FPS,您将有一个很好的时间预算来分割视频并重新绘制它们。另外,考虑到drawImage是一种非常快速的操作,它也有硬件支持,而且没有硬件支持也可以工作,您可以将其与WebGL进行权衡,WebGL不能在所有硬件(如低端消费者和旧硬件)上工作,在撰写本文时,对它的支持各不相同

在这种情况下,我最初会坚持使用2D画布。如果需要将切片包装和投影到3D对象上,则2D画布不是最佳选择。您可以直接在画布元素上使用CSS 3D变换,例如四边形变换。如果需要不同的转换,只需使用不同的画布元素,每个元素代表一个片段

顺便说一句,这里的一个技巧是创建一个屏幕外的画布,首先将框架绘制到其中。通过这种方式,您不必从运行视频的元素中抓取,这可能是一项昂贵的操作,具体取决于浏览器将如何抓取视频位图数据

例如:

var ctx=canvas.getContext'2d', sw=32, frame=document.createElementcanvas,//帧缓冲区 fctx=frame.getContext2d; 框架宽度=500; 框架高度=280; video.AddEventListener播放、切片和骰子,错误; 函数切片和骰子{ fctx.drawImagevideo,0,0;//视频到帧缓冲区,使其更平滑 //一些杂项切片 forvar x=0;x