Описание тега gl-triangle-strip

Полоса треугольников - это серия соединенных треугольников, имеющих общие вершины, что позволяет ускорить рендеринг и более эффективно использовать память для компьютерной графики. В реализации OpenGL GL_TRIANGLE_STRIP рисует серию треугольников, используя вершины v0, v1, v2, затем v2, v1, v3 (обратите внимание на порядок), затем v2, v3, v4 и так далее. Порядок должен гарантировать, что все треугольники нарисованы с одинаковой ориентацией, чтобы полоса могла правильно формировать часть поверхности.

Треугольник полоса представляет собой ряд соединенных треугольников, разделяющих вершины, что позволяет ускорить рендеринг и более эффективного использования памяти для компьютерной графики. Они оптимизированы для большинства видеокарт, что делает их наиболее эффективным способом описания объекта. Есть две основные причины использовать треугольные полоски:

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