Three.js - Вопросы о (использовании) THREE.BufferGeometry

Как я понял, использование геометрии буфера повысит производительность и уменьшит использование памяти, поскольку снижает стоимость передачи всех этих данных в графический процессор.

И как я понял из @WestLangley его пост здесь:

THREE.BufferGeometry медленно заменяет THREE.Geometry поскольку это вычислительно более эффективно.

Я в настоящее время использую Three.js - R72.
Когда я рисую свои геометрии, создаю сетки и добавляю их в сцену, я вижу, что в моих геометриях есть два свойства __directGeometry а также _bufferGeometry,

Здесь в THREE.BoxGeometry:

введите описание изображения здесь

Здесь в THREE.Geometry:

введите описание изображения здесь

Здесь в THREE.ShapeGeometry:

введите описание изображения здесь

Мои вопросы:

  1. Что такое THREE.DirectGeometry и что это делает? (Я не могу найти какую-либо документацию по этому вопросу)
  2. Это THREE.BufferGeometry Хранится в _bufferGeometry уже автоматически используется? Если нет, могу ли я просто использовать его вместо своей геометрии для повышения производительности?
  3. Есть методы конвертации: THREE.BufferGeometry имеет toGeometry а также THREE.Geometry имеет toBufferGeometry, Если я преобразую все мои нормальные геометрии в буферные, используя этот метод, это даст мне такое же увеличение производительности по сравнению с их отрисовкой в ​​виде THREE.BufferGeometry с самого начала?
  4. Как и когда я должен использовать THREE.BufferGeometry?
  5. Когда прекратится поддержка Three.js THREE.Geometry в пользу THREE.BufferGeometry?

ПРИМЕЧАНИЕ: я не смог найти подробную информацию о том, когда и как использовать геометрию буфера или когда он собирается заменитьTHREE.Geometry, Но если у кого-то есть хороший источник или ссылка, пожалуйста, оставьте комментарий.

1 ответ

Решение
  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

Другие вопросы по тегам