对于使用 Three.JS 构建的 VR 应用程序,是否有任何替代方法可以提供更好的性能?
Are there any alternatives to using TextGeometry for VR applications built with Three.JS that offer better performance?
我刚刚为我正在开发的 VR 游戏实现了一个计分系统。但是性能受到影响,我认为这是因为我如何渲染乐谱。在我实施评分后性能问题就开始了。
我正在创建一个新的 THREE.Mesh 和一个新的 THREE.TextGeometry,然后在每次乐谱发生变化时将其添加到场景中。据我了解,无法动态更改在 TextGeometry 对象中呈现的字符串,因此需要创建一个全新的对象。
每次分数变化时都会发生以下情况:
this.scene.remove( this.text );
this.material = this.assetStore.mainEmissiveMaterial;
this.geometry = new THREE.TextGeometry( String(this.score), {
font: this.assetStore.mainFont,
size: 6,
height: 0,
} );
this.geometry.translate(-10, 25, -40);
this.text = new THREE.Mesh( this.geometry, this.material );
this.scene.add( this.text );
我的问题:是否有另一种显示文本的方式,对性能影响不大?
处理几何图形时,不应在每次需要更新时创建和销毁它们。这会扼杀你的表现。相反,创建所有 10 个数字 0123456789
,将它们保存为您的模板,然后重新使用它们。显示和隐藏它们并根据需要复制它们,但不要在每次文本更改时重新构建数千个顶点和面。
我刚刚为我正在开发的 VR 游戏实现了一个计分系统。但是性能受到影响,我认为这是因为我如何渲染乐谱。在我实施评分后性能问题就开始了。
我正在创建一个新的 THREE.Mesh 和一个新的 THREE.TextGeometry,然后在每次乐谱发生变化时将其添加到场景中。据我了解,无法动态更改在 TextGeometry 对象中呈现的字符串,因此需要创建一个全新的对象。
每次分数变化时都会发生以下情况:
this.scene.remove( this.text );
this.material = this.assetStore.mainEmissiveMaterial;
this.geometry = new THREE.TextGeometry( String(this.score), {
font: this.assetStore.mainFont,
size: 6,
height: 0,
} );
this.geometry.translate(-10, 25, -40);
this.text = new THREE.Mesh( this.geometry, this.material );
this.scene.add( this.text );
我的问题:是否有另一种显示文本的方式,对性能影响不大?
处理几何图形时,不应在每次需要更新时创建和销毁它们。这会扼杀你的表现。相反,创建所有 10 个数字 0123456789
,将它们保存为您的模板,然后重新使用它们。显示和隐藏它们并根据需要复制它们,但不要在每次文本更改时重新构建数千个顶点和面。