Описание тега gl-triangle-strip
Треугольник полоса представляет собой ряд соединенных треугольников, разделяющих вершины, что позволяет ускорить рендеринг и более эффективного использования памяти для компьютерной графики. Они оптимизированы для большинства видеокарт, что делает их наиболее эффективным способом описания объекта. Есть две основные причины использовать треугольные полоски:
- Полоски треугольника повышают эффективность кода. После того, как первый треугольник определен с использованием трех вершин, каждый новый треугольник может быть определен только одной дополнительной вершиной, разделяющей последние две вершины, определенные для предыдущего треугольника.
- Полосы треугольников сокращают объем данных, необходимых для создания серии треугольников. Количество вершин, хранящихся в памяти, уменьшается с 3N до N+2, где N - количество треугольников, которые нужно нарисовать. Это позволяет меньше использовать дисковое пространство, а также ускоряет их загрузку в оперативную память.
Реализация OpenGL
OpenGL имеет встроенную поддержку треугольных полос с использованием функций glBegin(), glVertex*() и glEnd(). Чтобы нарисовать полосу треугольников, glBegin() необходимо передать аргумент GL_TRIANGLE_STRIP, который уведомляет OpenGL о том, что треугольная полоса вот-вот будет нарисована. Семейство функций glVertex*() задает координаты каждой вершины полосы треугольников.
//Vertices below are in Clockwise orientation
//Default setting for glFrontFace is Counter-clockwise
glFrontFace(GL_CW);
glBegin(GL_TRIANGLE_STRIP);
glVertex3f( 0.0f, 0.0f, 0.0f ); //vertex 1
glVertex3f( 0.0f, 1.0f, 0.0f ); //vertex 2
glVertex3f( 1.0f, 0.0f, 0.0f ); //vertex 3
glVertex3f( 1.5f, 1.0f, 0.0f ); //vertex 4
glEnd();
Обратите внимание, что для рисования второго треугольника нужна только одна дополнительная вершина. В OpenGL порядок, в котором указываются вершины, важен для согласованности нормалей поверхностей.
Цитируется непосредственно из Руководства по программированию OpenGL:
GL_TRIANGLE_STRIP Рисует серию треугольников (трехсторонних многоугольников), используя вершины v0, v1, v2, затем v2, v1, v3 (обратите внимание на порядок), затем v2, v3, v4 и так далее. Порядок должен быть таким, чтобы все треугольники были нарисованы с одинаковой ориентацией, чтобы полоса могла правильно образовывать часть поверхности.