【问题标题】:Three.js - Questions about (the use of) THREE.BufferGeometryThree.js - 关于(使用)THREE.BufferGeometry 的问题
【发布时间】:2016-05-05 15:29:52
【问题描述】:

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

据我所知,from @WestLangley his post 在这里:

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

我目前正在使用 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 的详细信息。但是,如果有人有好的来源或参考,请发表评论。

【问题讨论】:

    标签: javascript three.js geometry buffer-geometry


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

    three.js r.73

    【讨论】:

    • 感谢您的回答。您能否再详细说明一下这部分:如果我使用此方法将所有正常几何图形转换为缓冲几何图形,与从一开始就将它们绘制为 THREE.BufferGeometry 相比,它是否会给我同样的性能提升? 因为我仍然不确定是否应该将我的几何图形重新绘制为缓冲区几何图形以获得最大性能...
    • 还有一个...索引和未索引缓冲区几何之间是否存在性能差异?
    • (1) 正如我在 #3 中所说。上面,如果您想要关于性能的答案,您需要对您的特定应用程序进行测试。 (2) 渲染器无论如何都会将您的正常几何图形转换为缓冲几何图形,因此您没有理由手动进行转换。然而,这可能是一次很好的学习经历。 (3) 索引和非索引BufferGeometry 可能有也可能没有显着的性能差异。这取决于几何形状。
    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2020-12-09
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多