Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
комп графика Лекции.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
200 Кб
Скачать
☆

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.

  1. Для точек необходимо задать размер

glPointSize(20); где 20 – размер точки в пикселях.

  1. Для линий необходимо задавать толщину 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 – нормали интерполируются (объект гладкий, задается по умолчанию).