Javascript 三.JS异步几何处理
我正在开发一个基于web的游戏,它从服务器接收地形数据 收到数据后,我的代码用100x100段构建一个Javascript 三.JS异步几何处理,javascript,asynchronous,three.js,Javascript,Asynchronous,Three.js,我正在开发一个基于web的游戏,它从服务器接收地形数据 收到数据后,我的代码用100x100段构建一个PlaneGeometry 将地形添加到场景中时,该过程会冻结所有网站一段时间,通常约为一秒或两秒 有没有可能使这个过程异步化,从而使游戏体验更加流畅 如果是,可以做什么 不需要代码示例。好吧,是的,但这取决于您如何解决。最有可能发生这种情况的原因是THREE.WebGLRenderer通过gl.bufferData()将数据传输到GPU,您可能会同时获得大量几何图形,此过程会锁定浏览器。您可以
PlaneGeometry
将地形添加到场景中时,该过程会冻结所有网站一段时间,通常约为一秒或两秒
有没有可能使这个过程异步化,从而使游戏体验更加流畅
如果是,可以做什么
不需要代码示例。好吧,是的,但这取决于您如何解决。最有可能发生这种情况的原因是
THREE.WebGLRenderer
通过gl.bufferData()
将数据传输到GPU,您可能会同时获得大量几何图形,此过程会锁定浏览器。您可以尝试在接收时将其拆分,并将其以较小的批次添加到场景/对象中
当图形中的渲染器尚未遇到新几何体时,第一次调用render()时会发生这种情况 尝试使用
PlaneBufferGeometry
。通常,您可以添加封面和加载动画,在收到数据和应用程序准备就绪之前阻止UI。您还可以在接收数据后添加一个settmout
,以便给浏览器一些时间来处理渲染。这是很常见的…@taseenb这在我的应用程序中是不可接受的,因为客户端必须查看实时数据,这就是为什么我要求采用同步方法。在这种情况下,您必须优化流程和场景。首先,按照WestLangley的建议使用PlaneBufferGeometry
,然后在加载数据之前创建几何体,并仅更新顶点。第二:永远不要向场景中添加新几何体:重用几何体(并在不需要时使用不透明度将其隐藏)。如果你展示一些代码或是你想做的事情的截图,那就容易多了。我明白了。如何重复使用几何图形?我能给一个重复使用的几何体一个独立的旋转,位置和材质吗?