Студопедия — Вывод точек в 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; просмотров: 1378. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

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

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

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

Травматическая окклюзия и ее клинические признаки При пародонтите и парадонтозе резистентность тканей пародонта падает...

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

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

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

Правила наложения мягкой бинтовой повязки 1. Во время наложения повязки больному (раненому) следует придать удобное положение: он должен удобно сидеть или лежать...

ТЕХНИКА ПОСЕВА, МЕТОДЫ ВЫДЕЛЕНИЯ ЧИСТЫХ КУЛЬТУР И КУЛЬТУРАЛЬНЫЕ СВОЙСТВА МИКРООРГАНИЗМОВ. ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА БАКТЕРИЙ Цель занятия. Освоить технику посева микроорганизмов на плотные и жидкие питательные среды и методы выделения чис­тых бактериальных культур. Ознакомить студентов с основными культуральными характеристиками микроорганизмов и методами определения...

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