по

Основы библиотеки OpenGL

Многоугольник имеет две стороны - переднюю и заднюю - и может быть отрисован по-разному в зависимости от того, какая сторона обращена к наблюдателю. По умолчанию обе стороны рисуются одинаково. Для задания того, как следует рисовать переднюю и заднюю стороны многоугольника, служит процедура

void glPolygonMode ( GLenum face, GLenum mode );

Параметр face может принимать значения GL_FRONT_AND_BACK (обе стороны), GLJFRONT (передняя сторона) или GL_BACK (задняя сторона), параметр mode может принимать значения GL_POINT, GL_LINE или GL_FTLL, обозначая, что многоугольник должен рисоваться как набор граничных точек, замкнутая ломаная или как заполненная область, например

glPolygonMode ( GL_FRONT, GL_FILL ); glPolygonMode ( GL_SACK, GL_LINE )г это можно изменить „ . '

Рис. 4.3 при помощи процедуры

void glFrontFace ( GLenum mode );

По умолчанию mode равняется GL_CCW, что соответствует направлению обхода против часовой стрелки. Если задать этот параметр равным GL_CW, то лицевыми будут считаться многоугольники с направлением обхода вершин по часовой стрелке.

При помощи процедуры

void glCullFace ( GLenmn mode );

можно запретить вывод лицевых или нелицевых многоугольников. Параметр mode принимает одно из значений GL_FRONT (оставить только лицевые грани), GL_BACK (оставить нелицевые) или GL_FRONT_ANI)_BACK (оставить все грани). Для отсечения граней необходимо разрешить отсечение при помощи команды

glEnable ( GL_CULL_FACE );

По умолчанию многоугольник, чьи вершины появляются на экране в направлении против часовой стрелки, называются лицевыми (передними) (рис. 4.3).

m

Можно задать шаблон для заполнения грани при помощи процедуры

void glPolygonStipple ( const GLubyte * mask );

где mask задает массив битов размером 32 на 32. Для разрешения использования шаблонов при выводе многоугольников служит команда

glEnable ( GL_POLYGON_STIPPLE );

Для каждой вершины можно задать свой вектор нормали при помощи одной из следующих процедур:


⇐ Предыдущая| |Следующая ⇒