OpenGL: рисование линий с помощью VBO

Как нарисовать несколько отдельных линий с помощью одного VBO?


person itun    schedule 28.04.2011    source источник


Ответы (2)


В OpenGL-3.1 и более поздних версиях есть функция, называемая простой перезапуск. Он работает, указывая специальный индекс элемента массива вершин, который вызывает перезапуск текущего примитива. Таким образом, массив из одного элемента позволяет рисовать несколько GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, GL_QUAD_STRIP.

http://www.opengl.org/sdk/docs/man4/xhtml/glPrimitiveRestartIndex.xml

Это во многом основано на расширении NV_primitive_restart: http://www.opengl.org/registry/specs/NV/primitive_restart.txt

Кроме того, вы можете использовать примитивный тип, в котором вершины не являются общими, и немного раздуть массив индексов элементов.

person datenwolf    schedule 28.04.2011
comment
glDrawElements должно быть достаточно - плюс, как вы говорите, примитивный перезапуск доступен не во всех версиях. - person paulm; 10.02.2014

person    schedule
comment
Ага. На самом деле ничего другого в этом нет. Это правильный ответ. Каждая пара точек образует одну линию. Таким образом, вы можете хранить неограниченное количество строк в одном огромном VBO. - person TheBuzzSaw; 28.04.2011