Обновление данных вершин в VBO (glBufferSubData vs glMapBuffer)
Я хочу обновить список объектов из вершин после создания VBO. Я видел как glBufferSubData
и glMapBuffer
и оба они, похоже, делают похожие вещи, а это значит, что я теперь не уверен, какой из них использовать.
Мой псевдо-рабочий процесс:
Создать объект
Начать обновление вершин (вызывает glBufferData с данными = nullptr)
Обновить вершины объектов
End vertex update (принимает обновленные вершины и вызывает вызовы glBufferSubData
или glMapBuffer
)
Ответы
Ответ 1
Оба работают.
Если вы намерены часто обновлять вершины (каждый кадр или около того), я рекомендую избегать glBufferSubData, для чего требуется еще одна memcpy в драйвере. glMapBuffer/glMapBufferRange обычно дает вам больше возможностей.
Если вы обновляете только редко, glBufferSubData будет работать нормально.
См. Также главу 28 OpenGL Insights (бесплатно: http://openglinsights.com/)