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

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

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




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


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


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


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

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

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

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

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

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