在WebGL中将数据加载到纹理中的最快方法

在WebGL中将数据加载到纹理中的最快方法,webgl,webgl2,Webgl,Webgl2,我们正在分析我们的应用程序,我们注意到大部分cpu时间都花在调用texImage2D上,这是我们用来填充纹理的。下面是一个例子。我想知道在WebGL 1/2或专用浏览器扩展中是否有更快的方法可以让这更快 gl.bindTexture(gl.TEXTURE_2D, texture); gl.texImage2D(gl.TEXTURE_2D, 0, 0,

我们正在分析我们的应用程序,我们注意到大部分cpu时间都花在调用texImage2D上,这是我们用来填充纹理的。下面是一个例子。我想知道在WebGL 1/2或专用浏览器扩展中是否有更快的方法可以让这更快

   gl.bindTexture(gl.TEXTURE_2D, texture);
   gl.texImage2D(gl.TEXTURE_2D, 
                    0,             
                    0,            
                    0,             
                    width,  
                    height, 
                    gl.RED,      
                    gl.FLOAT,         
                    data);        
   gl.bindTexture(gl.TEXTURE_2D, null);

texStorage2D是更快的调用吗?有一个offset参数,它指向像素解包缓冲区。这会加快速度吗?我想这已经被问到了,答案是否定的:
texStorage2D
创建了一个不可变的纹理(它的大小和格式不能通过进一步调用来更改,这与使用
texImage2D
创建的纹理不同),这会导致一些速度提高,但我不确定它是否会影响加载时间。UnityWeb似乎只使用
texStorage2D
compressedExSubImage2D
,如果有帮助的话(当然,只要上下文是WebGL2)。谢谢@riv。真知灼见