Co to są obiekty macierzy wierzchołków?

Właśnie zaczynam uczyć się OpenGL dzisiaj z tego samouczka:http://openglbook.com/the-book/
Dotarłem do rozdziału 2, w którym narysowałem trójkąt i rozumiem wszystko z wyjątkiem VAO (czy ten skrót jest OK?). Samouczek ma ten kod:

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

Chociaż rozumiem, że kod jest konieczny, nie mam pojęcia, co on robi. Chociaż nigdy nie używam VaoId poza tym punktem (poza zniszczeniem go), kod nie działa bez niego. Zakładam, że dzieje się tak dlatego, że musi być związany, ale nie wiem dlaczego. Czy ten dokładny kod musi być częścią każdego programu OpenGL? Samouczek wyjaśnia VAO jako:

Obiekt tablicy wierzchołków (lub VAO) to obiekt, który opisuje, jak atrybuty wierzchołków są przechowywane w obiekcie bufora wierzchołków (lub VBO). Oznacza to, że VAO nie jest rzeczywistym obiektem przechowującym dane wierzchołków, ale deskryptorem danych wierzchołków. Atrybuty wierzchołków można opisać za pomocą funkcji glVertexAttribPointer i jej dwóch siostrzanych funkcji glVertexAttribIPointer i glVertexAttribLPointer, z których pierwszy omówimy poniżej.

Nie rozumiem, jak VAO opisuje atrybuty wierzchołków. Nie opisałem ich w żaden sposób. Czy pobiera informacje z glVertexAttribPointer? Myślę, że to musi być to. Czy VAO jest po prostu miejscem docelowym informacji z glVertexAttribPointer?

Na marginesie, czy samouczek jest zgodny z zasadami? Czy jest coś, na co powinienem zwrócić uwagę lub lepszy samouczek do naśladowania?

questionAnswers(3)

yourAnswerToTheQuestion