Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Нормаль





Определить нормальв вершине можно, используя команды

 

void glNormal3[b s i f d] (type coords)

void glNormal3[b s i f d]v (type coords)

 

Для правильного расчета освещения необходимо, чтобы вектор нормали имел единичную длину. Командой glEnable(GL_NORMALIZE) можно включить специальный режим, при котором задаваемые нормали будут нормироваться автоматически.

Режим автоматической нормализации должен быть включен, если приложение использует модельные преобразования растяжения/сжатия, так как в этом случае длина нормалей изменяется при умножении на модельно-видовую матрицу.

Команды

 

void glEnable (GLenum mode)

void glDisable (GLenum mode)

 

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

Операторные скобки glBegin / glEnd

Чтобы задать атрибуты графического примитива, одних координат вершин недостаточно. Эти вершины надо объединить в одно целое, определив необходимые свойства. Для этого в OpenGL используются операторные скобки, являющиеся вызовами специальных команд OpenGL Определение примитива или последовательностипримитивов происходит между вызовами команд

 

void glBegin (GLenum mode);

void glEnd (void);

 

Параметр mode определяет тип примитива, который задается внутри и может принимать нижеприведенные значения (рис.12.4.3).

GL_POINTS - каждая вершина задает координаты некоторой точки.

GL_LINES - каждая отдельная пара вершин определяет отрезок; если задано нечетное число вершин, то последняя вершина игнорируется.

GL_LINE_STRIP - каждая следующая вершина задает отрезок вместе с предыдущей.

GL_LINE_LOOP - отличие от предыдущего примитива только в том, что последний отрезок определяется последней и первой вершиной, образуя замкнутую ломаную.

GL_TRIANGLES - каждые отдельные три вершины определяют треугольник. Если задано не кратное трем число вершин, то последние вершины игнорируются.

GL_TRIANGLE_STRIP - каждая следующая вершина задает треугольник вместе с двумя предыдущими.

GL_TRIANGLE_FAN - треугольники задаются первой вершиной и каждой следующей парой вершин (пары не пересекаются).

GL_QUADS - каждая отдельная четверка вершин определяет четырехугольник. Если задано не кратное четырем число вершин, то последние вершины игнорируются.

GL_QUAD_STRIP - четырехугольник с номером n определяется вершинами с номерами 2n-1, 2n, 2n+2, 2n+1.

GL_POLYGON - последовательно задаются вершины выпуклого многоугольника.

Пример, иллюстрирующий прорисовку треугольника с разными цветами в вершинах.

 

GLfloat BlueCol[3] = {0,0,1};

glBegin(GL_TRIANGLES);

glColor3f(1.0, 0.0, 0.0); /* красный */

glVertex3f(0.0, 0.0, 0.0);

glColor3ub(0,255,0); /* зеленый */

glVertex3f(1.0, 0.0, 0.0);

glColor3fv(BlueCol); /* синий */

glVertex3f(1.0, 1.0, 0.0);

glEnd();

 

Как правило, разные типы примитивов имеют различную скорость визуализации на разных платформах. Для увеличения производительности предпочтительнее использовать примитивы, требующие меньшее количество информации для передачи на сервер, такие как GL_TRIANGLE_STRIP, GL_QUAD_STRIP, GL_TRIAGLE_FAN.

 

Рис. 12.4.3. Примитивы OpenGL

 

Кроме задания самих многоугольников, можно определить метод их отображения на экране.

Однако сначала надо определить понятие лицевых и обратных граней.

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

 

void glFrontFace (GLenum mode)

 

со значением параметра mode равным GL_CW (clockwise), а вернуть значение по умолчанию можно, указав GL_CCW (counter-clockwise).

Чтобы изменить метод отображения многоугольника используется команда

 

void glPolygonMode (GLenum face, Glenum mode).

 

Параметр mode определяет, как будут отображаться многоугольники, а параметр face устанавливает тип многоугольников, к которым будет применяться эта команда и может принимать следующие значения:

GL_FRONT - для лицевых граней;

GL_BACK - для обратных граней;

GL_FRONT_AND_BACK - для всех граней.

Параметр mode может быть равен:

GL_POINT - отображение только вершин многоугольников;

GL_LINE - многоугольники будут представляться набором отрезков;

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

Также можно указывать, какой тип граней отображать на экране. Для этого сначала надо установить соответствующий режим вызовом команды glEnable (GL_CULL_FACE), а затем выбрать тип отображаемых граней с помощью команды

 

void glCullFace (GLenum mode).

 

Вызов с параметром GL_FRONT приводит к удалению из изображения всех лицевых граней, а с параметром GL_BACK – обратных (установка по умолчанию).







Дата добавления: 2015-04-16; просмотров: 497. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

Гальванического элемента При контакте двух любых фаз на границе их раздела возникает двойной электрический слой (ДЭС), состоящий из равных по величине, но противоположных по знаку электрических зарядов...

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Эффективность управления. Общие понятия о сущности и критериях эффективности. Эффективность управления – это экономическая категория, отражающая вклад управленческой деятельности в конечный результат работы организации...

Мотивационная сфера личности, ее структура. Потребности и мотивы. Потребности и мотивы, их роль в организации деятельности...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Studopedia.info - Студопедия - 2014-2025 год . (0.008 сек.) русская версия | украинская версия