Студопедия — Лабораторная работа № 2. Примитивы OpenGL, основные приемы построения двумерных объектов.
Студопедия Главная Случайная страница Обратная связь

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

Лабораторная работа № 2. Примитивы OpenGL, основные приемы построения двумерных объектов.






Цель работы.

Знакомство с примитивами OpenGL, предназначенными для вывода точек, линий и многоугольников. Определение цвета объектов. Различные способы закрашивания объектов.

Необходимые теоретические сведения.

Для выполнения работы необходимо иметь представление об основных принципах формирования изображения на экране ([7] – лекция 17), о моделировании объектов на плоскости ([7] – лекции 7, 8, 10); знать особенности представления цвета в цветовой модели RGB ([7] – лекция 4); понимать смысл термина «антиэлайзинг» ([7] – лекция 6).

Область вывода в OpenGL задается командой

glViewPort(0, 0, ClientWidth, ClientHeight),

где первые два параметра задают положение левого верхнего угла окна вывода, параметры ClientWidth, ClientHeight определяют размер окна в экранных координатах. Центр полученной области вывода имеет координаты (0, 0). Координаты изменяются в диапазоне [-1; 1] по каждой оси.

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

BOOL SwapBuffers(HDC hdc);

Все изображения строятся из отдельных примитивов, которые описываются с помощью набора вершин (Vertex). Примитивами OpenGl являются точки (одиночные вершины), линии (пары вершин), треугольники (три вершины), четырехугольники (четыре вершины) и полигоны (3 и более вершин).

Командные скобки. Использование функций glBegin и glEnd.

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

Внутри командных скобок могут находиться любые операторы языка и многие функции OpenGL. Главное назначение командных скобок – задание режима (примитива) для команд glVertex (вершина), определяющих координаты вершин для рисования примитивов OpenGL.

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

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

glColor3f(0.3f, 0.5f, 0.1f)

где цвет формируется как сумма компонент красного, зеленого и синего цветов в указанной пропорции. Значения компонент задаются в виде вещественных чисел в интервале [0; 1].

Компоненты цвета могут быть заданы и в целочисленной форме, предельным значением в этом случае будет являться максимальное 8-битное целое без знака, например, белый цвет будет записан следующим образом:

glColor3i(214748647, 214748647, 214748647).

Однако предпочтительно использовать команду в вещественной форме, т.к. OpenGL хранит данные именно в вещественном формате.

Цифра 3 в названии команды означает число аргументов команды.

Аргументы функции glBegin.

Аргументами функции glBegin могут быть стандартные константы OpenGl, определяющие примитивы библиотеки: GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON. В программе имена констант должны быть записаны именно так как это сделано здесь (все в верхнем регистре).

Включение и отключение режима сглаживания (антиэлайзинг).

Для установки режима сглаживания перед командными скобками должна стоять команда glEnable() с соответствующей константой в качестве аргумента, а после командных скобок – команда glDisable() также с соответствующей константой. Выбор константы определяется примитивом, сглаживание которого должно быть включено (или отключено): GL_POINT_SMOOTH (сглаживание для точек), GL_LINE_SMOOTH (сглаживание линий), GL_POLYGON_SMOOTH (сглаживание для полигонов).







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



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

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

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

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

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

Решение Постоянные издержки (FC) не зависят от изменения объёма производства, существуют постоянно...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Принципы, критерии и методы оценки и аттестации персонала   Аттестация персонала является одной их важнейших функций управления персоналом...

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

Что такое пропорции? Это соотношение частей целого между собой. Что может являться частями в образе или в луке...

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