所以我正在开发一个Three.js项目,该程序似乎在某些地方滞后。具体来说,渲染我创建的文本网格时会出现性能最大的延迟:
var text1Geo = new THREE.TextGeometry("Hello", {font: font});
text1Mesh = new THREE.Mesh(text1Geo, textMaterial);
text1Mesh.position.set(-6500, 150, -500);
text1Mesh.castShadow = true;
scene.add(text1Mesh);
我想知道如果我使用OBJExporter将文本导出为obj,然后使用OBJLoader将网格加载到场景中,而不是创建THREE.TextGeometry,它是否会提高性能。这会改善性能吗?如果您想查看整个项目和源代码,请转到here。关于如何提高性能的任何其他提示或建议都非常感谢。谢谢!
答案 0 :(得分:0)
没有。
实验仍然有序,但答案是缓存文本几何。
而不是像
那样loadText( 'url.obj' , (t)=>{ /*...do stuff...*/});
你可以
computeText(){
var t = new THREE.TextGeometry();
...
}
computeText();
//...do stuff...
我的假设是obj在解析时不友好,但我可能错了。格式化的json可能更好,或者二进制。
因此,不是下载.obj,解析它,索引,然后做某事,而是在开始渲染之前计算它。
当这个东西击中gpu时,你很可能会遇到延迟,无论是计算还是下载。