Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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 如何使用webgl处理和更新大型阵列?_Javascript_Glsl_Webgl_Typed Arrays - Fatal编程技术网

Javascript 如何使用webgl处理和更新大型阵列?

Javascript 如何使用webgl处理和更新大型阵列?,javascript,glsl,webgl,typed-arrays,Javascript,Glsl,Webgl,Typed Arrays,我有两个大的Uint8Array。尺寸为:1024和2048 我想在每个帧中更新这些数组 1024length数组可容纳256个vec4制服,或16*16图像。但我不认为这是正确的方法 如何将大型数组从javascript发送到GLSL 编辑 我的纹理问题是,要更新每个帧中的图像,我必须将数据复制到ImageData对象中。然后我必须将图像数据绘制到画布上。在那之后,我必须获得画布的dataURL,并更改图像的src属性。纹理是处理WebGL中大型数据集的合适方法。可以将数据存储在1D或2D纹

我有两个大的
Uint8Array
。尺寸为:
1024
2048

我想在每个帧中更新这些数组

1024
length数组可容纳256个vec4制服,或16*16图像。但我不认为这是正确的方法

如何将大型数组从javascript发送到GLSL


编辑


我的纹理问题是,要更新每个帧中的图像,我必须将数据复制到
ImageData
对象中。然后我必须将图像数据绘制到画布上。在那之后,我必须获得画布的dataURL,并更改图像的src属性。纹理是处理WebGL中大型数据集的合适方法。可以将数据存储在1D或2D纹理中,然后在片段着色器中使用它

可以直接从类型化数组将数据加载到纹理中,无需先创建图像,请参见


由于制服太多,您很容易在某些GPU上遇到问题。有关制服数量的一些典型限制,请参见,特别是MAX_VERTEX_UNIFORM_向量和MAX_FRAGMENT_UNIFORM_向量。

@IterAtor我更新了我的答案,您可以将类型化数组直接加载到纹理中。我可能有助于分享您在javascript中尝试进行的修改。这些修改可能在像素着色器中完成,从而产生更好的性能。您不必将数据复制到
ImageData
。可以将键入的数组直接上载到纹理中。