Откройте объекты буфера хранилища GL Shader для замены атрибутов вершин

Я в основном получил тот же вопрос, что и парень, который спросил здесь:
Динамические размеры массивов в вершинном шейдере OpenGL ES; используется для наложения форм / целей морфинга .
Особенно его последний оставшийся без ответа вопрос беспокоит меня тоже.

Поэтому я также хочу использовать произвольное количество смешанных форм для каждой сетки, которую я обрабатываю. На данный момент я использую фиксированное число и рассматриваю фигуры как атрибут вершины. Преимущество здесь в том, что у меня всегда есть соответствующие данные для текущей вершины. Теперь, если я хочу использовать произвольное количество фигур, я решил, что буду использовать SSBO, поскольку их подсказка — именно то, что я хочу: данные динамического размера.
Однако, насколько я понимаю, SSBO являются статическими, и для каждой обработанной вершины в шейдере у меня есть данные blendshape для всей сетки. Это означает, что мне нужно будет ввести какой-то счетчик и попытаться выбрать правильный кусок данных из моего SSBO для каждой вершины.

Это понимание правильно?
Я действительно не уверен, что это оптимальное решение, может быть, вы можете дать мне несколько советов.

1

Решение

Да, ваше понимание верно.

Ты можешь использовать gl_VertexID или просто передайте некоторый «номер вершины» в качестве атрибута, чтобы узнать, какие данные загрузить в ваш SSBO для конкретной вершины, которую вы обрабатываете.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]