10

据我了解,使用缓冲区几何图形将提高性能并减少内存使用量,因为它降低了将所有这些数据传递到 GPU 的成本

正如我从@WestLangley 那里了解到的,他的帖子在这里:

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

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

在这里THREE.BoxGeometry

在此处输入图像描述

在这里THREE.Geometry

在此处输入图像描述

在这里THREE.ShapeGeometry

在此处输入图像描述

我的问题:

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

注意:我找不到有关何时以及如何使用缓冲区几何图形或何时替换THREE.Geometry. 但是,如果有人有好的来源或参考,请发表评论。

4

1 回答 1

8
  1. __directGeometry是用于在THREE.Geometry和之间转换的内部数据结构THREE.BufferGeometry。不要惹它。
  2. THREE.BufferGeometry.toGeometry()并且THREE.Geometry.toBufferGeometry()是方便的方法。BufferGeometry如果您的模型加载为并且您感觉更舒适地操作,第一个会很有帮助Geometry。如果你想要关于性能的答案,你需要做一个测试。缓冲区几何肯定加载得更快。
  3. 有很多例子展示了BufferGeometry. 如果您了解 "indexed" 和 "non-indexed" 之间的区别,那将是明智的BufferGeometryBufferGeometry定义的index属性允许共享顶点。非索引BufferGeometry就是我们所说的“三角汤”。
  4. THREE.Geometry在可预见的未来将保持不变。

三.js r.73

于 2016-01-28T17:36:16.700 回答