我有一个基本的场景,我正在使用JSONLoader加载对象。物体本身的占地面积非常小,例如:牛奶纸箱:560kb带纹理,34kb json文件。
渲染时,让我们说10个新对象,如果我绕着相机运行它们进入视野,动画循环会冻结一秒左右。在第一次冻结之后,无论有多少物体,摄像机都能平稳地运行。动态加载对象将是一个解决方案,但对于我的特定用例,我仍然需要在首次加载时加载至少50个对象。
更新 - 我添加了我在生产项目中使用的预加载功能,并且我还添加了21种不同的模型来说明我的具体方案。我尝试了以下解决方案:
尝试点击setCamera链接以了解它有多滞后。我需要将这个滞后时间减少到0毫秒。感谢您的支持!
工作演示: http://demo.adrianmoisa.ro/flexikom-loader/首先尝试上下环绕相机,检查它是否正常工作,然后左右。任何建议都非常感谢!
答案 0 :(得分:0)
查看您的代码,我看到您正在加载相同的对象10次,创建10个完全相同的网格。全部使用相同的几何形状和相同的材料。这就是你的滞后所在。从加载(对服务器的异步请求)和对象创建。
您需要做的是加载一个对象并创建一个您将分配给该对象的材质。然后你clone()
对象10次,为每个克隆对象分配你想要的不同位置。
答案 1 :(得分:0)
Gaitat是正确的,您不应该加载相同的对象10次。但我认为滞后与纹理直接相关
你应该在循环之外加载纹理
现在怎么样,当你只是加载2时,你在gpu上加载30个纹理(至少我认为这是它的工作原理)。
对页面进行概要分析表明texture2D
需要花费大量时间
我几乎可以肯定这会阻止滞后。