Это не очевидно из документации при вызове glVertexAttribPointer. Это похоже на часть инициализации VBO, но я замечаю пример кода, вызывающего его во время рендеринга.
glVertexAttribPointer(vertexAttributeId, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), reinterpret_cast<const GLvoid*>(offsetof(Vertex2D, m_x)));
Должен ли glVertexAttribPointer вызываться во время инициализации GL_ARRAY_BUFFER или он должен быть вызван во время рендеринга (после вызова glBindBuffer)?