Просто хочу удостовериться, что я правильно понял (я бы спросил о SO Chat, но он там мертв!):
У нас есть Vertex Array, который мы делаем "текущим", привязывая его/
то у нас есть буфер, который мы привязываем к цели.
то мы заполняем эту цель с помощью glBufferData
который по существу заполняет все, что связано с этой целью, то есть наш буфер
и затем мы называем glVertexAttribPointer
, который описывает, как данные выкладываются - данные являются тем, что связано с GL_ARRAY_BUFFER
и этот дескриптор сохраняется в нашем первоначальном массиве вершин
(1) Правильно ли я понимаю?
Документация немного скудна о том, как все коррелирует.
(2) Есть ли какой-то тип вершинного массива по умолчанию? Потому что я забыл/пропустил glGenVertexArrays
и glBindVertexArray
, и моя программа отлично работала без него.
Изменить: Я пропустил шаг... glEnableVertexAttribArray
.
(3) Вызывается привязка вершинного атрибута к вершинному массиву в момент времени glVertexAttribPointer
, и тогда мы можем включить/отключить атрибут через glEnableVertexAttribArray
в любое время, независимо от того, в какой момент привязан массив вершин?
Или (3b) Является ли атрибут вершины привязан к вершинному массиву в момент времени glEnableVertexAttribArray
, и поэтому мы можем добавить тот же атрибут вершины в несколько массивов вершин, вызывая glEnableVertexAttribArray
в разное время, когда разные вершины Массивы связаны?