ФУНКЦИЯ OpenGL СТИЛЯ ЛИНИИ

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

glLineStipple (repeatFactor, pattern); Параметр pattern (шестнадцатеричное целое число) указывает, как должна изображаться та или иная линия. В этом шаблоне 1 означает положение пикселя “включено”, а 0 - “выключено”. Данный шаблон применяется к пикселям, расположенным на прямой, начиная с младших разрядов шаблона. По умолчанию шаблон имеет вид OxFFFF (в каждом положении стоит значение 1), что соответствует сплошной линии. Целочисленный параметр repeatFactor сообщает, сколько раз должен повторяться каждый разряд в шаблоне перед применением следующего разряда. По умолчанию число повторов равно 1.

Для ломаной линии заданный узор стиля линии не возобновляется в начале каждого отрезка. Он непрерывно продолжается на протяжении всех отрезков, начинаясь в первой точке ломаной линии и заканчиваясь в последней точке последнего отрезка данной серии.

Предположим, что параметру pattern присвоено шестнадцатеричное значение OxOOFF, а коэффициент повтора равен 1. При таком шаблоне изобразится штрихованная линия, каждый штрих которой будет состоять из восьми пикселей, а между каждыми двумя штрихами будет по восемь пикселей в положении “выключено”. Кроме того, поскольку сначала применяются пиксели младшего разряда, линия будет начинаться с восьмипиксельного штриха, расположенного в первой точке отрезка. После этого штриха будет идти восьмипиксельное пустое расстояние, а затем еще один восьмипиксельный штрих и так далее до последней точки отрезка.

Перед изображением линии с помощью текущего шаблона нужно активизировать возможность OpenGL построения линий различного стиля. Для этого в программу вводится следующая команда.

glEnable (GL_LINE_STIPPLE); Если мы забудем включить эту функцию активизации, будут изображаться только сплошные линии; т.е. для изображения прямолинейных отрезков используется шаблон по умолчанию OxFFFF. В любой момент возможность построения линий различного стиля можно отключить, воспользовавшись такой функцией.

glDisable (GL_LINE_STIPPLE); Указанная функция меняет текущий шаблон стиля линии на значение, используемое по умолчанию (сплошные линии).

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

/* Определяется тип данных двухмерной внешней системы координат. */ typedef struct { float х, у; } wcPt2D;

wcPt2D dataPts [5];

void linePlot (wcPt2D dataPts [5])

{

int k;

glBegin (GL_LINE_STRIP); for (k = 0; k < 5; k++)

glVertex2f (dataPts [k].x, dataPts [k].y); glFlush ( ) ; glEnd ( );


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