OpenGL. Компьютерная графика. Васильев С.А. - 12 стр.

UptoLike

Составители: 

14
Эта команда рисует прямоугольник в плоскости z = 0. Левый нижний угол прямоугольника опреде-
ляется параметрами (x1, y1), а противоположный (по диагонали) (x2, y2). В случае векторной формы ко-
манды, углы задаются в виде двух указателей на массивы, каждый из которых содержит значения (x, y).
При визуализации многоугольников следует различать лицевую грань и нелицевую (обратную).
Если при рассмотрении многоугольника его список вершин обходится по часовой стрелке, то такая
грань многоугольника лицевая. Если против часовой, то – нелицевая.
В OpenGL существует механизм управления растеризацией многоугольников на экране. Для этого
используется команда
void glPolygonMode (GLenum face, Glenum mode)
Параметр mode определяет, как будут отображаться многоугольники, а параметр face устанавлива-
ет тип многоугольников, к которым будет применяться эта команда и может принимать следующие
значения:
face
Вид грани
GL_FRONT
Лицевые
GL_BACK
Нелицевые
GL_FRONT_AND_BAC
K
Лицевые и нелицевые
mode
Вид отображения грани
GL_POI
NT
Отображение только отдельных вершин много-
угольников.
GL_LINE
Отображение многоугольников в виде набора
отрезков.
GL_FILL
Многоугольники будут закрашиваться текущим
цветом (режим установлен по умолчанию).
Для каждой вершины геометрического объекта можно задать свой вектор нормали следующей ко-
мандой:
void glNormal3[b s i f d] ( type nx, type ny, type nz)
void glNormal3[b s i f d] v (const type *n)
Для включения автоматического приведения векторов к единичным применяют команду: glE-
nable(GL_NORMALIZE).
5.3 Управление размерами точки
По умолчанию, размер точки, толщина линии в примитивах соответствует одному пикселю на эк-
ране, линия всегда непрерывная. Но эти параметры в OpenGL можно изменять. Рассмотрим некоторые
команды предназначенные для этой цели.
Размер точки можно легко изменить командой – void glPointSize(GLfloat size), где параметр size за-
дает размер "квадрата" точки в пикселях. Дело в том, что при большом увеличении точки можно уви-
деть ее квадратность. Если данный параметр имеет значение 2, то точка будет выглядеть как квадрат
2×2. Для сглаживания углов "квадрата" точки больших размеров используется команда
glEnable(GL_POINT_SMOOTH), которая включает антиалиасинг точки. Выключение антиалиасинга для
точки осуществляется командой glDisable с параметром (GL_POINT_SMOOTH). По умолчанию анти-
алиасинг выключен.
Вот как выглядит фрагмент программы рисования "круглой" точки размеров 3 пикселя:
glEnable(GL_POINTS); // Будем работать с точкой
glEnable(GL_POINT_SMOOTH); // Разрешаем антиалиасинг точки
glPointSize(3.0); // Задаем размер точки
glBegin(GL_POINTS); // Определяем координаты рисования
glVertex2i(100,100);
glEnd();