В 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
Кроме того, вы можете использовать примитивный тип, в котором вершины не являются общими, и немного взорвать массив индекса элемента.