2010-12-16 2 views
2

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

Я хотел бы отправить свою геометрию в «массив структур» в glsl с помощью VBO, но я не знаю, как обрабатывать обновление каждой матрицы меша в случае преобразования матрицы родительского меша. Должен ли я пересекать дерево сетки и добавлять матрицу для каждой вершины в каждый кадр? Должен ли я преумножать вершины каждого кадра? Должен ли я содержать список матриц в форме и ссылаться на матрицу текущей вершины по индексу? Должен ли я использовать один glDrawArrays или glDrawElements для каждой сетки?

ответ

1

«Стандартный» подход - использовать при вызове glDraw на сетку.

Для каждой сетки вы подаете свою матрицу преобразования в единую форму, которая применяется для всей сетки. Затем эта матрица используется в вершинном шейдере, чтобы преобразовать сетку из «пространства объектов» в «пространство клипа».

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

Другой подход, в зависимости от количества ячеек, которые вы должны нарисовать, - использовать «аппаратное ускорение». Если вы можете нарисовать подобную сетку несколько раз, предоставляя массив матриц, и пусть аппаратное обеспечение выбирает соответствующую матрицу, учитывая, что экземпляр идентификатора выводится.

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