Операторные скобки glBegin / glEnd
Для того, чтобы задать атрибуты графического примитива, одних координат вершин недостаточно. Эти вершины надо объединить в одно целое, определив необходимые свойства. Для этого в OpenGL используются так называемые операторные скобки, являющиеся вызовами специальных команд OpenGL Определение примитива или последовательности примитивов происходит между вызовами команд:
· void glBegin(GLenum mode);
· void glEnd(void);
Параметр mode определяет тип примитива, который задается внутри и может принимать следующие значения (табл. 3.3, рис 3.2).
Таблица 3.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
| последовательно задаются вершины выпуклого многоугольника.
|

Рис. 3.2. Примитивы OpenGL
Например, чтобы нарисовать треугольник с разными цветами в вершинах, можно использовать следующий код:
| glBegin(GL_TRIANGLES);
// красный
glColor3f(1, 0, 0);
glVertex3i(0, 0, 0);
// зеленый
glColor3ub(0,255,0);
glVertex3i(1, 0, 0);
// синий
glColor3f(0,0,1);
glVertex3i(1, 1, 0);
glEnd();
|
Кроме задания самих многоугольников, можно определить метод их отображения на экране. Однако сначала надо определить понятие лицевых и обратных граней.
Под гранью понимается одна из сторон многоугольника, и по умолчанию лицевой считается та сторона, вершины которой обходятся против часовой стрелки. Направление обхода вершин лицевых граней можно изменить вызовом команды void glFrontFace (GLenum mode) со значением параметра mode равным GL_CW (clockwise), а вернуть значение по умолчанию можно, указав GL_CCW (counter-clockwise).
Чтобы изменить метод отображения многоугольника используется команда void glPolygonMode (GLenum face, Glenum mode). Параметр mode определяет, как будут отображаться многоугольники:
GL_POINT
| будут отображаться только вершины многоугольников
| GL_LINE
| многоугольник будет представляться набором отрезков
| GL_FILL
| многоугольники будут закрашиваться текущим цветом с учетом освещения (этот режим установлен по умолчанию)
| Параметр face устанавливает тип многоугольников, к которым будет применяться эта команда и может принимать следующие значения:
GL_FRONT
| для лицевых граней
| GL_BACK
| для обратных граней
| GL_FRONT_AND_BACK
| для всех граней
|
Лабораторная работа №8
Цель работы: овладение методами программирования трехмерной компьютерной графики с использованием библиотек OpenGL.
Отчет по работе должен включать в себя следующие разделы:
Техническое задание
Построение с использованием языка программирования высокого уровня и графических библиотек трехмерной модели детали (по индивидуальному заданию лабораторной работы №1). В качестве графических библиотек могут использоваться инструментальные средства OpenGl и DirectX, а также их надстройки (GLUT, GLAUX и т.д.).
Анализ решаемой задачи
Проведение анализа:
· Выбор используемых инструментальных средств (языка программирования и графической библиотеки);
· Определение геометрических примитивов и объектов, на основе которых возможна реализация поставленной задачи.
Выполнение задания
Описание этапов реализации технического задания с приведением исходного кода программы и изображений сцены.
Выводы по работе
Описание возможностей используемых инструментальных средств, функций и их параметров, выявленных достоинств и недостатков.
При полигональном моделировании для быстрого определения координат точек полигонов можно использовать построенную в среде AutoCAD модель детали. В этом случае в среде AutoCAD необходимо:
· Включить режим объектной привязки «OSNAP»;
· Установить центр координат (панель «UCS» ð «Origin UCS»);
· Указать точки, координаты которых требуется получить (панель «Inquiry» ð «Locate Point»).
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2025 stydopedia.ru Все материалы защищены законодательством РФ.
|