Книги

OpenGL / FPC - Глава 5

В третьей главе мы узнали, как рисовать треугольники в OpenGL. Эти треугольники — одни из примитивов OpenGL. Примитивы — это простые фигуры, такие как треугольники, четырехугольники, отрезки и тд. С помощью них можно составлять более сложные объекты.

Отрезок задается двумя вершинами: началом и концом. У треугольника 3 вершины, у четырехугольника — 4, а многоугольник может состоять из бесконечного числа вершин. Подробнее о многоугольниках расскажем позже, сейчас сосредоточимся на простых примитивах.

Отрезок рисуется с помощью glBegin( GL_LINES ). Пока не встретится glEnd(), по каждой паре вершин будет чертиться отрезок. Если вы хотите, чтобы конечная вершина одного отрезка была начальной для следующего, используйте glBegin( GL_LINE_STRIP ).

Как видно справа, нужно 3 вершины при glBegin( GL_LINE_STRIP ). Треугольники также имеют strip разновидность. В этом случае последние две вершины треугольника являются стартовыми вершинами для следующего.

Треугольники имеют еще один режим рисования, TRIANGLE_FAN. Fan (веер) использует первую вершину в качестве центра, а остальные вершины располагаются вокруг этого центра.

Теперь — про четырехугольники. Они тоже имеют stripped режим, однако в этом случае они ведут себя не как четырехугольники. Четные вершины рисуются на одной стороне, нечетные — на другой. То есть вершины полосы четырехугольников следует задавать так: v1, v2, v4, v3, v6, v5,.. Поначалу это смущает, но и к этому можно привыкнуть.

В чем преимущества в использовании strip примитивов? Очевидно, что здесь надо задавать меньше вершин. Это значит, что вам потребуется меньше места, а видеокарта обработает ваши объекты быстрее. Поэтому составлять объекты из strip примитивов предпочтительней.

Взгляните на программу пример здесь. Там рисуются все упомянутые здесь примитивы, но не в виде закрашенных областей, а в виде контуров, посредством glPolygonMode(GL_BACK, GL_LINE); Никакого фокуса, просто так задается вычерчивание контура объекта, вместо закраски его установленным цветом.

Актуальные версии
FPC3.2.2release
Lazarus3.2release
MSE5.10.0release
fpGUI1.4.1release
links