Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过Websocket将图像传输到WebGL Vs Canvas,可能还包括workers_Javascript_Performance_Canvas_Websocket_Webgl - Fatal编程技术网

Javascript 通过Websocket将图像传输到WebGL Vs Canvas,可能还包括workers

Javascript 通过Websocket将图像传输到WebGL Vs Canvas,可能还包括workers,javascript,performance,canvas,websocket,webgl,Javascript,Performance,Canvas,Websocket,Webgl,我通过ArrayBuffer通过Websocket接收图像并将其发布到画布上。大约每秒10张图像(比如500x500 PNG) 实际上发布到WEBGL会更快。 同样,我不会做任何旋转/变换 只是简单的一个接一个的显示很多图像 因为它使用GPU/着色器,WebGl会更快吗?大多数canvas2d实现已经使用硬件加速,所以当您只想在画布上放置简单图像时,WebGl只会引入更多的技术复杂性,而不会给您带来任何好处 当您想要执行一些复杂的图像过滤操作时,将WebGL用于2d图形是有意义的,因为着色器可以

我通过ArrayBuffer通过Websocket接收图像并将其发布到画布上。大约每秒10张图像(比如500x500 PNG)

实际上发布到WEBGL会更快。 同样,我不会做任何旋转/变换

只是简单的一个接一个的显示很多图像


因为它使用GPU/着色器,WebGl会更快吗?

大多数canvas2d实现已经使用硬件加速,所以当您只想在画布上放置简单图像时,WebGl只会引入更多的技术复杂性,而不会给您带来任何好处

当您想要执行一些复杂的图像过滤操作时,将WebGL用于2d图形是有意义的,因为着色器可以在GPU上执行这些操作,而使用canvas2d执行像素级操作的唯一方法是使用getImageData将图形加载到RAM,在CPU上执行该操作,并使用setImageData将其加载回GPU


当您遇到性能问题时,我认为您的瓶颈可能就在这里:“通过Websocket每秒大约10个图像(比如500x500 PNG)”。500x500 PNG的大小至少为200kb,但可以大得多,这取决于内容和压缩算法的选择。每秒10个图像至少占用每秒2MB的带宽,至少为16 MBit/s。你有那么多带宽吗

大多数canvas2d实现已经使用硬件加速,因此当您只想在画布上放置简单图像时,WebGL只会引入更多的技术复杂性,而不会给您带来任何好处

当您想要执行一些复杂的图像过滤操作时,将WebGL用于2d图形是有意义的,因为着色器可以在GPU上执行这些操作,而使用canvas2d执行像素级操作的唯一方法是使用getImageData将图形加载到RAM,在CPU上执行该操作,并使用setImageData将其加载回GPU


当您遇到性能问题时,我认为您的瓶颈可能就在这里:“通过Websocket每秒大约10个图像(比如500x500 PNG)”。500x500 PNG的大小至少为200kb,但可以大得多,这取决于内容和压缩算法的选择。每秒10个图像至少占用每秒2MB的带宽,至少为16 MBit/s。你有那么多带宽吗

你到底想完成什么?视频聊天?如果是,请使用WebRTC。如果你说为什么你试图通过WebSockets每秒发送10张图片,人们可能会提出其他解决方案。你到底想实现什么?视频聊天?如果是,请使用WebRTC。如果你说为什么你试图通过WebSockets每秒发送10张图片,人们可能会提出其他解决方案。谢谢你的回复。图像是随机大小的,因此可以是10x10到500x500。假设我做10x10个图像。有时我的浏览器会变快,有时会随机变慢,然后开始运行。可能是浏览器端的内存泄漏。感谢您的回复。图像是随机大小的,因此可以是10x10到500x500。假设我做10x10个图像。有时我的浏览器会变快,有时会随机变慢,然后开始运行。可能是浏览器端的内存泄漏。谢谢