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

时间:2016-01-28 10:06:39

标签: javascript three.js geometry buffer-geometry

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

正如我在此处理解from @WestLangley his post

  

THREE.BufferGeometry正在慢慢取代THREE.Geometry,因为它在计算上效率更高。

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

这里有THREE.BoxGeometry

enter image description here

这里有THREE.Geometry

enter image description here

这里有THREE.ShapeGeometry

enter image description here

我的问题:

  1. 什么是THREE.DirectGeometry,它有什么作用? (我似乎无法找到任何关于此的文件)
  2. THREE.BufferGeometry中存储的_bufferGeometry是否已自动使用?如果没有,我可以简单地使用它而不是我的几何来提高性能吗?
  3. 有转化方法:THREE.BufferGeometrytoGeometryTHREE.GeometrytoBufferGeometry。如果我使用这种方法将所有常规几何转换为缓冲几何,与从一开始将它们绘制为THREE.BufferGeometry相比,它会给我带来相同的性能提升吗?
  4. 我应该如何以及何时使用THREE.BufferGeometry
  5. three.js什么时候停止支持THREE.Geometry支持THREE.BufferGeometry
  6. 注意: 我无法找到有关何时以及如何使用缓冲区几何图形或何时将替换{{1}的详细信息}}。但如果某人有良好的来源或参考,请发表评论。

1 个答案:

答案 0 :(得分:7)

  1. __directGeometry是用于在THREE.GeometryTHREE.BufferGeometry之间转换的内部数据结构。不要乱用它。
  2. THREE.BufferGeometry.toGeometry()THREE.Geometry.toBufferGeometry()是便捷方法。如果您的模型加载为BufferGeometry并且操作Geometry时感觉更舒服,则第一个有用。如果您需要有关性能的答案,则需要进行测试。缓冲区几何形状肯定会加载得更快。
  3. 有许多示例显示BufferGeometry的用法。如果你理解“索引”和“非索引”BufferGeometry之间的区别,那将是明智之举。定义了BufferGeometry属性的index允许共享顶点。非索引BufferGeometry就是我们所说的“三角汤”。
  4. THREE.Geometry将在可预见的将来继续存在。
  5. three.js r.73