Piszę trochę silnika graficznego za pomocą OpenGL (przez OpenTK z C#).OpenGL, VAO i wiele buforów
Aby zdefiniować atrybuty wierzchołków, posiadam klasę VertexDeclaration z tablicą struktur VertexElement odwzorowanych na wywołania glEnableVertexAttribArray/glVertexAttribPointer.
Ponadto, w celu obsługi wielu strumieni wierzchołków, mam specjalną strukturę przechowującą bufor wierzchołków, deklarację wierzchołków, przesunięcie wierzchołków i częstotliwość wystąpienia (jak struktura XNA VertexBufferBinding).
Obecnie za każdym razem, gdy wywoływane jest wywołanie rysunku, wykonuję iteracje po wszystkich ustawionych strumieniach wierzchołków i wiążę ich bufory wierzchołków, stosuję deklaracje wierzchołków, wyłączam nieużywane atrybuty wierzchołków i rysuję prymitywy.
Chciałbym użyć VAO do buforowania wywołań glEnableVertexAttribArray do nich, i zawsze, gdy stosowany jest strumień wierzchołków, należy powiązać VAO i zmienić powiązanie bufora tablicowego.
Czy to właściwe użycie VAO?
Dzięki za tę wspaniałą odpowiedź.W takim razie krok 'glBufferData' wchodzi w życie? Czy nie musisz najpierw buforować danych przed użyciem "glVertexAttribPointer"? Przepraszamy, jestem bardzo nowy w OpenGL –