- •Лекция 1 Основные понятия OpenGl
- •1.2 Однородные координаты и матрицы
- •1.3 Поворот точки вокруг прямой заданной точкой а(a,b,c) и направляющим вектором e(l,m,n), , на угол φ.
- •1.4 Система координат
- •1.5 Вершины
- •Лекция 2 Освещение объектов
- •2.1Основные понятия
- •2.2 Задание цвета объекта
- •2.3.1 Свойства диффузного отражения
- •2.3.2 Свойства зеркального отражения
- •Лекция 3
- •3.1 Контекст воспроизведения
- •2.3 Освещение объектов
- •3.2 Стандартные функции библиотеки OpenGl
- •3.3 Функции библиотеки glu
- •3.4 Рекомендации по созданию графических приложений
- •Лекция 4
- •Свойства материалов
- •Установка источников света
- •Модель освещения
- •Смешение цветов
- •4.5 Задание теста глубины
- •Лекция 5 Наложение текстуры на объект
- •Задание параметров текстуры
- •Задание параметров текстуры
- •Взаимодействие текстуры с объектом
- •Привязка координат текстуры к объекту
- •Подготовка текстуры из bmp файла, для случая, когда размеры файла известны
- •Пример инициализации двухмерной текстуры
- •Лекция 6. Буфер трафарета
- •6.1 Тест трафарета
- •6.2 Логические операции с графическими объектами
- •6.2.1 Описание метода вычитания графических объектов
- •Лекция 7. Сплайновые поверхности
- •7.1 Кривые Безье
- •7.2 Отображение кривых Безье в OpenGl
- •7.3 Отображение поверхностей Безье в OpenGl
- •Лекция 8. Выбор графических объектов на экране
- •8.1 Идея метода
- •Лекция 9. Экспорт трехмерных изображений из 3d Studio max
- •9.1 Формат файла gms
- •9.2 Импортирование изображений объектов в программу
- •9.3 Загрузка файла формата gms в Delphi
- •Лекция 10 Вспомогательные функции
- •10.1.Работа с таймером
- •10.2 Обработка нажатия клавиши
- •10.3 Вывод текста на экран
- •Литература
3.2 Стандартные функции библиотеки OpenGl
Стандартные функции библиотеки OpenGL позволяют строить:
- точки;
- линии;
- многоугольники.
Структура команды во всех случаях одинакова.
glBegin(GL_XXX);
Перечень вершин.
glEnd;
где
GL_XXX – тип графического примитива:
GL_POINPS - точки
GL_LINES – линии (попарно)
GL_LINES_STRIP – последовательно соединённые линии
GL_LINES_LOOP - контур
GL_TRIANGLES - треугольники
GL_TRIANGLES_STRIP - последовательно соединённые треугольники
GL_QUADS - квадраты
GL_POLIGON – многоугольник
Вершины можно задавать в явном виде или рассчитывать в цикле.
Пример отображения равностороннего шестиугольника.
glBegin( GL_POLIGON);
for i:=0 to 6 do
glEnd;
Особенности реализации стандартных функций библиотеки OpenGL.
Для точек необходимо задать размер
glPointSize(20); где 20 – размер точки в пикселях.
Для линий необходимо задавать толщину glLineWidth(5);
где 5 – толщина линий в пикселях.
Если требуется задать тип линии, то вначале следует инициализировать эту функцию
glEnable(GL_LINE_STIPPLE);
А затем указать тип линии:
glLineStipple(1,$0101); - точечная;
glLineStipple(1,$00FF); - штриховая;
glLineStipple(1,$1С47); - штрихпунктирная;
glLineStipple(1,$FFFF); - сплошная.
Отключить эту функцию можно вызвав команду glDisable(GL_LINE_STIPPLE);
По умолчанию данная функция отключена, и линия выводится сплошной.
В командах glLineStipple, первый аргумент масштаб, а второй битовая матрица, указывающая положение пикселей. Так, например для маски
$00FF=0000 0000 1111 1111 OpenGL выведет в направлении линии последовательность из 8 пикселей пробелов и 8 пикселе текущего цвета, если масштаб равен 1. Если масштаб равен 2, то последовательность будет из 16–и пикселей пробелов и 16-и цветных.
3.3 Функции библиотеки glu
Библиотека glu используется для построения поверхностей второго порядка.
С помощью этой библиотеки реализуются следующие функции:
- диски (кольца, сектора, сегменты);
- цилиндры (конусы);
- сферы (части сфер);
- торы.
Для работы с командами библиотеки glu необходимо описать глобальную переменную класса GLUqudricOBj. Например:
var
qudricOBj: GLUqudricOBj;
А в процедуре FormCreate создать экземпляр объекта
qudricOBj:=gluNewQudric;
Для отображения объекта используются команды:
RB –Внутренний радиус
RH – Внешний радиус
Каждый из этих объектов может быть отображен в четырёх стилях:
- Сплошной заливкой;
- линиями граней;
- контурной линией;
- точками вершин.
Стили задаются командой: gluQuadricDrawStyle (quadObj, tip);
Где tip: GLU_FILL - Сплошная заливка
GLU_LINE - линии граней;
GLU_SILHOUETTE – контурная линия;
GLU_POINT – точки.
В библиотеке GLU есть команда позволяющая задать направление нормали к поверхности:
gluQuadricOrientation (quadObj, GLU_OUTSIDE); - задание внешней нормали.
gluQuadricOrientation (quadObj, GLU_INSIDE); - задание нормали внутренней;
Направление нормали используется в расчетах интенсивности отраженного света.
В библиотеке GLU предусмотрена команда
gluQuadricNormals (quadObj, tip); позволяющая использовать три варианта расстановки нормалей, где tit:
GLU_NONE – нормали не задаются (объект тёмный);
GLU_FLAT- нормали задаются к граням объекта (объект ребристый);
GLU_SMOOTH – нормали интерполируются (объект гладкий, задается по умолчанию).
