Я в основном получил тот же вопрос, что и парень, который спросил здесь:
Динамические размеры массивов в вершинном шейдере OpenGL ES; используется для наложения форм / целей морфинга .
Особенно его последний оставшийся без ответа вопрос беспокоит меня тоже.
Поэтому я также хочу использовать произвольное количество смешанных форм для каждой сетки, которую я обрабатываю. На данный момент я использую фиксированное число и рассматриваю фигуры как атрибут вершины. Преимущество здесь в том, что у меня всегда есть соответствующие данные для текущей вершины. Теперь, если я хочу использовать произвольное количество фигур, я решил, что буду использовать SSBO, поскольку их подсказка — именно то, что я хочу: данные динамического размера.
Однако, насколько я понимаю, SSBO являются статическими, и для каждой обработанной вершины в шейдере у меня есть данные blendshape для всей сетки. Это означает, что мне нужно будет ввести какой-то счетчик и попытаться выбрать правильный кусок данных из моего SSBO для каждой вершины.
Это понимание правильно?
Я действительно не уверен, что это оптимальное решение, может быть, вы можете дать мне несколько советов.
Да, ваше понимание верно.
Ты можешь использовать gl_VertexID
или просто передайте некоторый «номер вершины» в качестве атрибута, чтобы узнать, какие данные загрузить в ваш SSBO
для конкретной вершины, которую вы обрабатываете.
Других решений пока нет …