我正在尝试借助“文本几何”创建时钟。为了更新时间,我需要更新“文本几何”中的文本,这可以通过删除并重新创建新的“文本几何”来完成。

每当我添加一个新的Text Geometry时,它都会冻结我的浏览器:

 // Remove old mesh
  earthClockMesh.geometry.dispose();
  earthClockMesh.material.dispose();
  group.remove(earthClockMesh);


   //add new mesh
  earthClockMesh = this.getTextMesh(
    new Date(diluatedTime).toLocaleString(),
    textMaterial
  );
  group.add(earthClockMesh);


任何人都知道更好的方法,可以在不冻结浏览器的情况下更新“文本几何”中的文本。

现场例子

https://codesandbox.io/s/peaceful-boyd-x859m

当TextGeometry更改时,您可以看到粒子冻结了片刻

最佳答案

使用THREE.TextBufferGeometry将提高性能,因为它产生的对象分配比TextGeometry少得多。此外,THREE.Geometry的每个实例在第一次渲染之前都会在内部转换为THREE.BufferGeometry。如果您另外降低curveSegments的数量,则应该几乎没有明显的滞后。

three.js R107

07-24 15:50