по
Основы библиотеки 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 );
Для каждой вершины можно задать свой вектор нормали при помощи одной из следующих процедур: