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
。可以将键入的数组直接上载到纹理中。