От точек перейдем к линиям. Разберем следующий возможный аргумент команды glBegin — константу GL_LINES, задающий примитив "независимый отрезок". Для этого примитива следующие в командных скобках вершины (т. е. функции glertex) задают попарно координаты начала и конца каждого отрезка прямой. Снова вернемся к примеру с точками и подправим код рисования следующим образом :
glBegin (GL_LINES); glVertex2f (-1, 1); glVertex2f (1, -1); glVertex2f (-1,-1); glVertex2f (1, 1); glEnd;
Рисуются два отрезка, соединяющие углы окна по диагоналям. Для увеличения толщины отрезков перед командными скобками укажите ширину линии:
glLineWidth (2.5);
Эта функция также должна выноситься за командные скобки. Как и у точек, у линий можно устранять ступенчатость. Исправьте код следующим образом ( Пример ):
glLineWidth (15); glEnable (GL_LINE_SMOOTH); glBegin (GL_LINES); glVertex2f (-0.7, 0.7);
… и посмотрите результаты работы программы с вызовом и без вызова glEnable (GL_LINE_SMOOTH) .
Итак, константа GL_LINES задает примитив отдельных отрезков, определенных указанием пар вершин. Понятно, что количество вершин должно быть четным.
Следующая константа — GL_LINE_STRIP — определяет примитив, когда перечисляемые вершины последовательно соединяются одна за другой. Приводимый код поясняет отличие этого примитива от предыдущего.
glBegin (GL_LINE_STRIP); glVertex2f (-1, -1); glVertex2f (-1, 1); glVertex2f (1, 1); glVertex2f (1, -1) ; glEnd;
Результат — буква П по границе окна.
В примитиве, задаваемом константой GL_LINE_LOOP, также последовательно соединяются перечисляемые вершины, однако последняя вершина замыкается с самой первой. Если в предыдущем примере использовать GL_LINE_ LOOP, будет построен квадрат по границе окна.
В примерах на отрезки мы пока использовали непрерывную линию. Для рисования пунктирной линией перед командными скобками добавьте следующие строки (Пример ):
glLineStipple (I, $FOFO); glEnable (GL__LINE_STIPPLE) ;
У функции glLineStipple первый аргумент — масштабный множитель, второй аргумент задает шаблон штриховки (побитовым способом).
|