Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 三.JS异步几何处理_Javascript_Asynchronous_Three.js - Fatal编程技术网

Javascript 三.JS异步几何处理

Javascript 三.JS异步几何处理,javascript,asynchronous,three.js,Javascript,Asynchronous,Three.js,我正在开发一个基于web的游戏,它从服务器接收地形数据 收到数据后,我的代码用100x100段构建一个PlaneGeometry 将地形添加到场景中时,该过程会冻结所有网站一段时间,通常约为一秒或两秒 有没有可能使这个过程异步化,从而使游戏体验更加流畅 如果是,可以做什么 不需要代码示例。好吧,是的,但这取决于您如何解决。最有可能发生这种情况的原因是THREE.WebGLRenderer通过gl.bufferData()将数据传输到GPU,您可能会同时获得大量几何图形,此过程会锁定浏览器。您可以

我正在开发一个基于web的游戏,它从服务器接收地形数据

收到数据后,我的代码用100x100段构建一个
PlaneGeometry

将地形添加到场景中时,该过程会冻结所有网站一段时间,通常约为一秒或两秒

有没有可能使这个过程异步化,从而使游戏体验更加流畅

如果是,可以做什么


不需要代码示例。

好吧,是的,但这取决于您如何解决。最有可能发生这种情况的原因是
THREE.WebGLRenderer
通过
gl.bufferData()
将数据传输到GPU,您可能会同时获得大量几何图形,此过程会锁定浏览器。您可以尝试在接收时将其拆分,并将其以较小的批次添加到场景/对象中


当图形中的渲染器尚未遇到新几何体时,第一次调用render()时会发生这种情况

尝试使用
PlaneBufferGeometry
。通常,您可以添加封面和加载动画,在收到数据和应用程序准备就绪之前阻止UI。您还可以在接收数据后添加一个
settmout
,以便给浏览器一些时间来处理渲染。这是很常见的…@taseenb这在我的应用程序中是不可接受的,因为客户端必须查看实时数据,这就是为什么我要求采用
同步方法。在这种情况下,您必须优化流程和场景。首先,按照WestLangley的建议使用
PlaneBufferGeometry
,然后在加载数据之前创建几何体,并仅更新顶点。第二:永远不要向场景中添加新几何体:重用几何体(并在不需要时使用不透明度将其隐藏)。如果你展示一些代码或是你想做的事情的截图,那就容易多了。我明白了。如何重复使用几何图形?我能给一个重复使用的几何体一个独立的旋转,位置和材质吗?