Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
对于使用Three.JS构建的VR应用程序,除了使用TextGeometry之外,还有其他更好的选择吗?_Text_Three.js_Virtual Reality - Fatal编程技术网

对于使用Three.JS构建的VR应用程序,除了使用TextGeometry之外,还有其他更好的选择吗?

对于使用Three.JS构建的VR应用程序,除了使用TextGeometry之外,还有其他更好的选择吗?,text,three.js,virtual-reality,Text,Three.js,Virtual Reality,我刚刚为我正在开发的一款虚拟现实游戏实现了一个计分系统。但是表现很糟糕,我认为这是因为我如何得分。在我实施评分后,性能问题就开始了 我正在使用新的THREE.TextGeometry创建一个新的THREE.Mesh,然后在每次分数更改时将其添加到场景中。据我所知,TextGeometry对象中呈现的字符串不能动态更改,因此需要创建一个全新的对象 每次分数变化时,都会发生以下情况: this.scene.remove( this.text ); this.material = th

我刚刚为我正在开发的一款虚拟现实游戏实现了一个计分系统。但是表现很糟糕,我认为这是因为我如何得分。在我实施评分后,性能问题就开始了

我正在使用新的THREE.TextGeometry创建一个新的THREE.Mesh,然后在每次分数更改时将其添加到场景中。据我所知,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
,将它们保存为模板,然后重新使用它们。根据需要显示、隐藏并复制它们,但不要在每次文本更改时重新构建数千个顶点和面。

@Marquizzo是否复制并粘贴您的注释作为答案,以便我选择它作为答案?