Three.js - 关于(使用)THREE.BufferGeometry 的问题

Three.js - Questions about (the use of) THREE.BufferGeometry

据我了解,using buffer geometries 将提高性能并减少内存使用,因为 它降低了将所有这些数据传递给 GPU 的成本

据我了解 from @WestLangley his post 此处:

THREE.BufferGeometry is slowly replacing THREE.Geometry as it is computationally more efficient.

我目前正在使用 three.js - r72.
当我绘制我的几何图形时制作网格和将它们添加到场景中我看到我的几何体中有两个属性 __directGeometry_bufferGeometry.

这里是THREE.BoxGeometry:

这里是THREE.Geometry:

这里是THREE.ShapeGeometry:

我的问题:

  1. 什么是 THREE.DirectGeometry 它有什么作用? (我似乎找不到任何关于此的文档)
  2. 存储在_bufferGeometry中的这个THREE.BufferGeometry是否已经自动使用了?如果没有,我可以简单地使用它而不是我的几何体来提高性能吗?
  3. 有转换方式:THREE.BufferGeometrytoGeometryTHREE.GeometrytoBufferGeometry。如果我使用这种方法将我所有的普通几何图形转换为缓冲几何图形,与从一开始就将它们绘制为 THREE.BufferGeometry 相比,它会给我同样的性能提升吗?
  4. 我应该如何以及何时使用 THREE.BufferGeometry
  5. three.js 什么时候会停止支持 THREE.Geometry 转而支持 THREE.BufferGeometry

注意:我无法找到有关何时以及如何使用缓冲区几何结构或何时将其替换的详细信息THREE.Geometry .但如果有人有好的来源或参考,请发表评论。

  1. __directGeometry是一个内部数据结构,用来在THREE.GeometryTHREE.BufferGeometry之间转换。不要乱动它。
  2. THREE.BufferGeometry.toGeometry()THREE.Geometry.toBufferGeometry() 是方便的方法。如果您的模型加载为 BufferGeometry 并且您觉得操纵 Geometry 更舒服,则第一个很有帮助。如果您想要有关性能的答案,则需要进行测试。缓冲区几何结构绝对加载得更快。
  3. 有很多例子展示了 BufferGeometry 的用法。如果您了解 "indexed" 和 "non-indexed" BufferGeometry 之间的区别,那将是明智的。 BufferGeometry 定义的 index 属性允许共享顶点。非索引 BufferGeometry 就是我们所说的 "triangle soup".
  4. THREE.Geometry 将在可预见的未来继续存在。

three.js r.73