现在我正在设计一个系统,允许用户创建对象和指定新材料。我制作了一些东西,让用户创建一种材料,将其添加到材料字典中,然后当他们创建对象时,他们从字典中选择一种材料。我的“问题”是,因为对象引用了字典中的材料,所以对这些材料所做的更改会改变所有具有这些材料的对象。我不确定这是否是“好的”,我当时的推理是这样做是我假设的“最佳实践”,因为在gpu上共享冗余材料似乎比给每个对象提供该材料的自己的克隆,然后迫使gpu在这些材料之间切换更容易。
我在没有真正了解three.js内部发生什么的情况下做出了这个假设,所以我觉得我可能做了一些完全没有好处的事情,并且使控制对象材料的个人属性成为一件令人头疼的事情(每次都必须使其成为自己的材料)。
我想知道的是,我是不是犯了一个大错,是否应该改变它,使用字典中定义的材料的“独特”副本,或者我现在的方式实际上是在优化任何东西。
发布于 2014-05-19 11:57:47
我认为这不会大大降低性能。此外,只有当用户尝试更改字典中的材料时,您才可以从字典中克隆它们。我不记得Three.js材质受到性能的强烈影响。http://threejs.org/docs/#Reference/Materials/Material中的克隆方法
https://stackoverflow.com/questions/23729423
复制相似问题