Как нарисовать несколько отдельных линий с помощью одного VBO?
OpenGL: рисование линий с помощью VBO
Ответы (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
glDrawElements должно быть достаточно - плюс, как вы говорите, примитивный перезапуск доступен не во всех версиях.
- person paulm; 10.02.2014
person
schedule
Ага. На самом деле ничего другого в этом нет. Это правильный ответ. Каждая пара точек образует одну линию. Таким образом, вы можете хранить неограниченное количество строк в одном огромном VBO.
- person TheBuzzSaw; 28.04.2011