Что такое объекты массива вершин?

Сегодня я только начинаю изучать OpenGL по этому руководству :http://openglbook.com/the-book/
. Я добрался до главы 2, где я рисую треугольник, и я понимаю все, кроме VAOs (это аббревиатура подходит? ). Учебник имеет этот код:

glGenVertexArrays(1, &VaoId);
glBindVertexArray(VaoId);

Хотя я понимаю, что код необходим, я понятия не имею, что он делает. Хотя я никогда не использую VaoId после этого момента (, кроме как для его уничтожения ), код не работает без него. Я предполагаю, что это потому, что это необходимо для привязки, но я не знаю, почему. Должен ли этот точный код быть частью каждой программы OpenGL?В учебнике VAO объясняются как:

A Vertex Array Object (or VAO) is an object that describes how the vertex attributes are stored in a Vertex Buffer Object (or VBO). This means that the VAO is not the actual object storing the vertex data, but the descriptor of the vertex data. Vertex attributes can be described by the glVertexAttribPointer function and its two sister functions glVertexAttribIPointer and glVertexAttribLPointer, the first of which we’ll explore below.

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

Кстати, является ли учебник, которому я следую, приемлемым? Есть ли что-то, на что я должен обратить внимание, или лучший учебник для подражания?

100
задан Soocks 13 April 2018 в 10:49
поделиться