据我了解using buffer geometries会提高性能并减少内存使用量,因为会降低将所有这些数据传递到GPU 的成本。
正如我在此处理解from @WestLangley his post:
THREE.BufferGeometry
正在慢慢取代THREE.Geometry
,因为它在计算上效率更高。
我目前正在使用three.js - r72 。
当我绘制几何图形时,将它们添加到场景中我看到有两个我的geomtries __directGeometry
和_bufferGeometry
内的属性。
这里有THREE.BoxGeometry
:
这里有THREE.Geometry
:
这里有THREE.ShapeGeometry
:
我的问题:
THREE.DirectGeometry
,它有什么作用? (我似乎无法找到任何关于此的文件)THREE.BufferGeometry
中存储的_bufferGeometry
是否已自动使用?如果没有,我可以简单地使用它而不是我的几何来提高性能吗?THREE.BufferGeometry
有toGeometry
,THREE.Geometry
有toBufferGeometry
。如果我使用这种方法将所有常规几何转换为缓冲几何,与从一开始将它们绘制为THREE.BufferGeometry
相比,它会给我带来相同的性能提升吗?THREE.BufferGeometry
?THREE.Geometry
支持THREE.BufferGeometry
?注意: 我无法找到有关何时以及如何使用缓冲区几何图形或何时将替换{{1}的详细信息}}。但如果某人有良好的来源或参考,请发表评论。
答案 0 :(得分:7)
__directGeometry
是用于在THREE.Geometry
和THREE.BufferGeometry
之间转换的内部数据结构。不要乱用它。THREE.BufferGeometry.toGeometry()
和THREE.Geometry.toBufferGeometry()
是便捷方法。如果您的模型加载为BufferGeometry
并且操作Geometry
时感觉更舒服,则第一个有用。如果您需要有关性能的答案,则需要进行测试。缓冲区几何形状肯定会加载得更快。BufferGeometry
的用法。如果你理解“索引”和“非索引”BufferGeometry
之间的区别,那将是明智之举。定义了BufferGeometry
属性的index
允许共享顶点。非索引BufferGeometry
就是我们所说的“三角汤”。THREE.Geometry
将在可预见的将来继续存在。three.js r.73