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

Wil*_*ilt 9 javascript geometry three.js buffer-geometry

据我所知,使用缓冲区几何可以提高性能并减少内存使用量,因为它可以降低将所有这些数据传递给GPU的成本.

正如我从@WestLangley所了解的那样:

THREE.BufferGeometry正在逐步取代,THREE.Geometry因为它在计算上更有效率.

我目前正在使用three.js - r72.
当我画我的几何形状使网格,并将它们添加到我看到有我的geomtries内两个属性的场景__directGeometry_bufferGeometry.

在这里THREE.BoxGeometry:

在此输入图像描述

在这里THREE.Geometry:

在此输入图像描述

在这里THREE.ShapeGeometry:

在此输入图像描述

我的问题:

  1. THREE.DirectGeometry它是什么,它做什么?(我似乎无法找到任何关于此的文件)
  2. 这个THREE.BufferGeometry存储_bufferGeometry已经自动使用了吗?如果没有,我可以简单地使用它而不是几何来提高性能吗?
  3. 有转换方法:THREE.BufferGeometryhas toGeometryTHREE.Geometryhas toBufferGeometry.如果我使用这种方法将所有常规几何转换为缓冲几何,与THREE.BufferGeometry从一开始绘制它们相比,它会给我相同的性能提升吗?
  4. 我应该如何以及何时使用THREE.BufferGeometry
  5. three.js所当将停止支持THREE.Geometry赞成THREE.BufferGeometry

注意:我找不到有关何时以及如何使用缓冲区几何形状或何时更换的详细信息THREE.Geometry.但如果某人有良好的来源或参考,请发表评论.

Wes*_*ley 7

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

three.js r.73

  • (1)正如我在#3中所说的那样.如上所述,如果您需要有关性能的答案,则需要对特定应用程序进行测试.(2)渲染器无论如何都会将您的常规几何转换为缓冲几何,因此您没有理由手动进行转换.然而,这可能是一个很好的学习经历.(3)索引和非索引的"BufferGeometry"可能有,也可能没有_significant_性能差异.这取决于几何形状. (2认同)