Я пытаюсь написать функции, которые могут рисовать общие фигуры без текстур. Это включает в себя систему примитивных многоугольников, но в качестве примера я буду использовать функцию моего прямоугольника:Редактирование данных буфера в массиве вершин
void Rectangle (float x1, float y1, float x2, float y2);
Я не уверен, как лучше всего справиться с этим, учитывая, что весь мой рендеринг использует VAO. Моя нынешняя мысль состоит в том, чтобы использовать одно VAO с одним прикрепленным к нему VBO и редактировать этот VBO каждый раз, когда вызывается одна из этих функций. Поэтому для примера прямоугольника я просто привяжу буфер и вызову glBufferData, проходящего в массиве с параметрами для точек прямоугольника, а затем передайте массив вершин на оставшуюся часть моей системы рендеринга.
Не удается найти информацию о том, хранит ли VAO ссылку на буфер или делает внутреннюю копию данных на основе буфера и формата. Можно ли редактировать буфер каждый раз, когда я собираюсь сделать его с помощью VAO, и если это так, я должен каждый раз вызывать glVertexAttribPointer?
Iirc, ссылка указывает, что VAO хранит идентификаторы VBOs, привязанные к нему, но ничто не должно препятствовать вам связывать VBO с несколькими VAO, например. Точка использования VAO заключается в том, чтобы избежать необходимости всего кода котельной плиты, необходимого для настройки привязок для данного конвейера рендеринга. – didierc
[там] (http: // http: //stackoverflow.com/questions/8704801/glvertexattribpointer-clarification) вы идете. – didierc
Под «ссылкой» я имел в виду спецификации opengl. – didierc