У вас просто будет больше атрибутов вершин.Обычно у вас может быть:
in vec3 position;
in vec3 normal;
in vec4 color;
in vec2 texCoord;
Для целей морфинга вам понадобится:
in vec3 position0;
in vec3 position1;
in vec3 normal0;
in vec3 normal1;
in vec4 color;
in vec2 texCoord;
Фактическая позиция в пространстве модели будет линейной интерполяцией между position0
и * 1008.*.То же самое относится и к нормальному (я думаю).Получив их, вы проходите через обычные преобразования.Координаты цвета и текстуры, предположительно, не меняются, но если они изменяются, то им также необходимо иметь версии 0
и 1
.
Фактический рендеринг довольно прост.Предположительно, у вас будут все позиции для целей морфинга в одном буфере.Таким образом, это вопрос привязки атрибута position0
к первой цели преобразования и атрибуту position1
ко второй цели преобразования.То же самое касается нормалей.Затем вы делаете как обычно.