Я путаюсь с точкой в создании/создании объекта массива вершин (VAO) с помощью:
glGenVertexArrays(GLsizei n, GLuint *arrays);
и
glBindVertexArray(GLuint);
Поскольку я все еще могу создать объект-буфер, скажем для вершин, и описать этот буферный объект с glVertexAttribPointer
и glEnableVertexAttribArray
, не создавая VAO.
Мой вопрос в том, что вам не нужно фактически создавать VAO для описания данных в объекте буфера, почему бы такие источники, как OpenGL SuperBible 5ed, включить вызов для создания VAO при создании VBOs? Используются ли они только для более продвинутых тем, которые мне еще предстоит обнаружить, я полностью смущен?
Также я впервые столкнулся с этим вопросом при чтении записи wikipedias на VBOs, и их примерный код не включает вызовы glGenVertexArrays()
, но они все еще описывают данные с помощью glVertexAttribPointer()
. Wiki VBO entry -
Пример, где VAO создаются по какой причине?