Студопедия — Вывод точек в OpenGL.
Студопедия Главная Случайная страница Обратная связь

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

Вывод точек в OpenGL.






Рассмотрим рисование точек. Точки представляют собой одиночные вершины. Для рисования вершины используется команда glVertex. Если точка должна быть изображена на плоскости, то для определения ее положения необходимы две координаты. В этом случае используется функция с двумя аргументами: glVertex2f(0, 0). Буква f в названии функции определяет тип аргументов – вещественные числа (float). Точка в пространстве определяется тремя координатами, следовательно должна использоваться команда с тремя аргументами: glVertex3f(0.5, 0.3,-0.7).

Команды glVertex должны размещаться между командными скобками. При этом количество точек может быть любым.

Аргументом функции glBegin для рисования точек является константа GL_POINTS.

Аргументом команд glEnable() и glDisable() для включения/отключения режима сглаживания является константа GL_POINT_SMOOTH.

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

Пример:

glColor3f(1.0, 0.0, 0.0); // Установили красный цвет

glEnable(GL_POINT_SMOOTH); // Включение режима сглаживания для

// точек

glPointSize(3); // Установили размер точки 3 пиксела

glBegin(GL_POINTS); // Режим рисования - точки

glVertex2f(-0.5, -0.7);

glVertex2f(0.0, 0.0);

glVertex2f(0.1, 0.9);

glVertex2f(0.3, -0.5);

glEnd(); // Конец рисования

glDisable(GL_POINT_SMOOTH); // Отключение режима сглаживания для

// точек

Линии: одиночные, ломаные, замкнутые ломаные.

Для рисования линий существует три режима: одиночные линии, ломаная, замкнутая ломаная.

Одиночная линия определяется двумя вершинами. Если требуется нарисовать несколько одиночных линий, то между командными скобками должны быть описаны координаты пар вершин, т.е. количество команд glVertex между командными скобками должно быть четным. В случае, если количество вершин нечетно – последняя вершина игнорируется.

Аргументом функции glBegin для рисования одиночных линий является константа GL_LINES.

Аргументом команд glEnable() и glDisable() для включения/отключения режима сглаживания является константа GL_LINE_SMOOTH.

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

Для изменения типа линии используется команда glLineStipple(), имеющая два аргумента. Первый аргумент – масштабный множитель, а второй представляет собой шестнадцатиричную константу[4], определяющую шаблон штриховки (побитовым способом). Эта команда должна стоять вне операторных скобок.

ПРИМЕР:

glColor3f(1.0, 0.0, 0.0); // Установили красный цвет

glEnable(GL_LINE_SMOOTH); // Включение режима сглаживания для

// линий

glLineWidth(3); // Установили толщину линии 3 пиксела

glLineStipple(1, 0xF0F0); // Тип линии – пунктирная

glEnable(GL_LINE_STIPPLE); // Разрешить изменение типа линии

glBegin(GL_LINES); // Режим рисования – одиночные линии

glVertex2f(-0.5, -0.7); // Начало первой линии

glVertex2f(0.0, 0.0); // Конец первой линии

glVertex2f(0.1, 0.9); // Начало второй линии

glVertex2f(0.3, -0.5); // Конец второй линии

glEnd(); // Конец рисования

glDisable(GL_LINE_SMOOTH); // Отключение режима сглаживания для

// линий

Если требуется нарисовать ломаную линию, то в командных скобках используют константу GL_LINE_STRIP. Вершины, перечисленные между командными скобками, интерпретируются следующим образом: конечная точка первой линии является начальной точкой следующего звена ломаной и т.д. Количество вершин может быть как четным, так и нечетным. Ширина и тип ломаной линии задаются так же как и для одиночных линий.

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

Вывод треугольников: одиночные треугольники, ленты треугольников, веера треугольников.

 
 

Для рисования отдельных треугольников константа командных скобок: GL_TRIANGLES. Количество вершин, перечисленных между командными скобками должно быть кратно трем. Каждые три вершины определяют треугольник.

Лента треугольников используется, если изображение может быть построено с помощью нескольких треугольников, имеющих смежные стороны (Рисунок 1. Лента треугольников).

Здесь сторона a2a3 является общей стороной для первого и второго треугольников, сторона a3a4 – общей стороной второго и третьего треугольников и т.д. Если такую фигуру описывать с помощью одиночных треугольников, то необходимо задавать координаты всех вершин всех треугольников: a1, a2, a3, a2, a3, a4, a3, a4, a5, a4, a5, a6 – всего 12 вершин. Использование ленты треугольников позволяет не дублировать вершины при описании их координат. Изображенная на рисунке фигура может быть представлена лентой треугольников, координаты вершин перечисляются в следующем порядке: a1, a2, a3, a4, a5, a6 – достаточно 6 вершин.

 

 
 

Константа командных скобок для примитива «лента треугольников»: GL_TRIANGLE_STRIP.

Другая возможность рисования с помощью треугольников – использование «веера треугольников» в тех случаях, когда несколько треугольников имеют общую вершину (Рисунок 2. Веер треугольников). При описании вершин первой в списке должна стоять общая вершина. Т.о. в списке из нескольких вершин первые три вершины определяют первый треугольник; первая, третья и четвертая – второй; первая, четвертая и пятая – третий; и т.д. Если в списке имеется N вершин, то будет изображено N-2 треугольника.

Константа командных скобок для веера треугольников: GL_TRIANGLE_FAN.







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



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

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

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

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

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