glBegin (GL_POLYGON); glVertex2iv (pl); glVertex2iv (p2); glVertex2iv (p3); glVertex2iv (p4); glVertex2iv (p5); glVertex2iv (p6); glEnd ( ) ; В списке вершин многоугольника должно быть как минимум три вершины. В противном случае ничего изображено не будет.

Если поменять порядок точек в списке вершин из предыдущего кода и воспользоваться другой константой примитива GL_TRIANGLES, то получится два отдельных закрашенных треугольника, показанных на рис. 3.56, б.

glBegin (GLJTRIANGLES); glVertex2iv (pl); glVertex2iv (p2); glVertex2iv (p6); glVertex2iv (p3); glVertex2iv (p4); glVertex2iv (p5); glEnd ( ); В этом случае первые три точки обозначают вершины одного треугольника, следующие три точки задают следующий треугольник, и т.д. Для каждого закрашенного треугольника вершины задаются в направлении против часовой стрелки. Набор не соединенных между собой треугольников изображается с помощью этой константы примитива в том случае, если никакие вершины не будут повторяться. Если список содержит менее трех вершин, ничего изображено не будет, а если количество заданных вершин не будет кратно трем, то последние две или одна точка просто не будут учитываться.

Изображение закрашенных многоугольников с помощью списка из шести вершин: а) один выпуклый закрашенный многоугольник, полученный с помощью константы ет^РОЬУСОЫ; б) два не соединенных между собой треугольника, полученные с помощью константы вЬ_ТК1АШ1,ЕЗ; в) четыре соединенных треугольника, полученные с помощью константы ет,_ТШАШЬЕ_ЗТН.1Р; г) четыре соединенных треугольника, полученные с помощью константы СЬ_ТК1АЫ6ЬЕ_ЕАЫ

Рис. 3.56. Изображение закрашенных многоугольников с помощью списка из шести вершин: а) один выпуклый закрашенный многоугольник, полученный с помощью константы ет^РОЬУСОЫ; б) два не соединенных между собой треугольника, полученные с помощью константы вЬ_ТК1АШ1,ЕЗ; в) четыре соединенных треугольника, полученные с помощью константы ет,_ТШАШЬЕ_ЗТН.1Р; г) четыре соединенных треугольника, полученные с помощью константы СЬ_ТК1АЫ6ЬЕ_ЕАЫ

Изображение закрашенных четырехугольников с помощью списка из координат восьми вершин: а) два не соединенных между собой четырехугольника, полученные с помощью константы 6Ь_оиАОБ; б) три соединенных четырехугольника, полученные с помощью константы 6Ь_0иАО_ЗТЯ1Р

Рис. 3.57. Изображение закрашенных четырехугольников с помощью списка из координат восьми вершин: а) два не соединенных между собой четырехугольника, полученные с помощью константы 6Ь_оиАОБ; б) три соединенных четырехугольника, полученные с помощью константы 6Ь_0иАО_ЗТЯ1Р

Кроме функций примитивов для общего вида треугольников и многоугольников пакет OpenGL предлагает средства описания двух типов четырехугольников (многоугольников с четырьмя сторонами). С помощью константы примитива GL_QUADS и следующего списка из восьми вершин, которые задаются как двухмерные массивы координат, можно получить изображение, показанное на рис. 3.57, а.

glBegin (GL_QUADS); glVertex2iv (р1); glVertex2iv (р2); glVertex2iv (рЗ); glVertex2iv (р4); glVertex2iv (р5); glVertex2iv (рб); glVertex2iv (р7); glVertex2iv (р8); glEnd ( ); Первые четыре точки определяют вершины одного четырехугольника, следующие четыре точки описывают следующий четырехугольник, и т.д. Для каждого закрашенного четырехугольника вершины задаются против часовой стрелки. Если координаты вершин не повторяются, то получается изображение набора не соединенных между собой четырехугольных закрашенных фигур. Для этого примитива необходимо задать как минимум четыре вершины. В противном случае ничего изображено не будет. Кроме того, если число заданных вершин не будет кратно четырем, то лишние значения просто не будут приниматься во внимание.

Переставив вершины в списке из предыдущего примера и заменив константу примитива на GL_QUAD_STRIP, можно получить набор соединенных четырехугольников, показанных на рис. 3.57, б.


⇐ вернуться назад | | далее ⇒