Vertex Buffer Объекты, вероятно, то, что вы хотите. После загрузки исходного набора данных вы можете вносить изменения в существующие фрагменты с помощью glBufferSubData()
.
Если вы добавите дополнительные линейные сегменты и переполните размер буфера, вам, конечно, придется создать новый буфер, но это ничем не отличается от необходимости выделять новый, больший фрагмент памяти в C, когда что-то растет.
РЕДАКТИРОВАТЬ: пара заметок в списках отображения, и почему бы не использовать их:
- В OpenGL 3.0 списки отображения устарели, поэтому их использование несовместимо с предыдущими версиями 3.0 (реализации 2.1, конечно, будут на некоторое время, поэтому, в зависимости от вашей целевой аудитории, это может не быть проблемой)
- Всякий раз, когда вы что-то меняете, вам приходится перестраивать весь список отображения, который не отвечает всей цели списков отображения, если что-то часто меняется.