Структура OpenGL VAO / VBO для модели с движущимися частями?

Я пришел из этого вопроса:

opengl vbo advice

Я использую OpenGL 3.3 и не буду использовать устаревшие функции. Я использую Assimp для импорта моих моделей блендера. Но я немного запутался в том, насколько я должен разделить их с точки зрения VAO и VBO.

Прежде всего, небольшой побочный вопрос. Я использую glDrawElements, значит ли это, что я не могу чередовать свои атрибуты вершин или может ли VAO вычислить, используя glVertexAttribPointer и смещение glDrawElements, чтобы увидеть, где находится моя вершина?

Главный вопрос, я думаю, сводится к тому, как мне структурировать мои VAO / VBO для модели с несколькими движущимися частями и несколькими сетками pr. часть.

Каждый узел в assimp может содержать несколько сеток, где каждая сетка имеет текстуру, вершины, нормали, материал и т. Д. Узлы в assimp содержат преобразования. Скажем, у меня есть корабль с пушечной башней. Я хочу иметь возможность вращать турель. Означает ли это, что я сделаю узел корабля отдельным VAO с VBO для каждого меша, содержащего его атрибуты (или несколько VBO и т. Д.).Думаю, это похоже на

draw(ship);    //call to draw ship VAO
pushMatrix(turretMatrix)  //updating uniform modelview matrix for the shader
draw(turret);  //call to draw turret VAO

. Я еще не полностью понимаю UBO (однородные буферные объекты), но кажется, что я могу передать несколько униформ, поможет ли это мне содержать полную модель с подвижными частями в одном VAO?

7
задан Community 23 May 2017 в 11:46
поделиться