2014-01-03 3 views
0

Я хочу вырезать сетку на куски. Поэтому я сталкиваюсь с проблемой программирования: как эффективно добавить новый узел резания в исходный сетчатый VAO (буфер массива вершин)? С процедурой резания происходит создание нового режущего узла одновременно. Это означает, что для каждого кадра создано много новых узлов. Нужно ли переупорядочивать структуру VBO (объект буфера вершин) и IBO (объект буфера индекса), вставляя новые вершины и индексы в VBO и IBO на каждом кадре? Есть ли у кого-то хорошие идеи о том, как разрезать сетку и обновить VAO более эффективно?Как эффективно разрезать сетку?

+2

opengl не имеет ничего общего с редактированием геометрии вашей модели, вы должны уточнить свой вопрос. – user2485710

+0

@ user3072616 Если ваша сетка не добавляет новые новые вершины в сетку, вам нужно только обновить связанный буфер индекса с новой топологией. Однако, если вы вводите новые вершины, вам нужно будет обновить буфер массива и буфер индекса. Поскольку это похоже на то, что вы делаете это на процессоре, я рекомендую обновлять буферы с помощью 'glBufferData', особенно если они меняют размер. Что касается того, что вам нужно обновить за кадр, это зависит от того, какие данные изменяются. Если это только топология (индексы), вы можете оставить свои буферы вершин одинаковыми. – radical7

ответ

0

У меня был такой вопрос, как Multiple, dynamic model data in opengl.

В принципе, из того, что я нашел, вы можете иметь один VAO и один набор VBO (местоположения, нормали и т. Д.), А затем вручную управлять памятью с помощью glBufferSubData(). Но я обнаружил, что слишком тяжело (а не тяжело, но много времени) за то, что я хотел, поэтому я просто добавляю VAO и новые VBOs для каждой отрезанной части. Затем удалите их, когда они исчезли. В основном просто создайте надежную систему сетки/модели, которая легко позволяет удалить функции удаления и копирования.

Смежные вопросы