С помощью функций примитивов, существующих в основной библиотеке OpenGL, можно строить точки, прямолинейные отрезки, закрашенные выпуклые многоугольники, а также пиксельные или растровые матричные структуры. В библиотеке GLUT можно найти стандартные процедуры для изображения строк символов. Другие виды примитивов, такие как окружности, эллипсы или закрашенные вогнутые многоугольные области, также можно строить с помощью этих функций, или с помощью стандартных процедур из библиотек GLU и GLUT. Все координатные значения выражаются в абсолютных координатах в правосторонней декартовой системе координат. Координаты точек, с помощью которых описывается сцена, могут задаваться как в двух-, так и в трехмерной системе координат, Для задания значений координат могут использоваться целые числа или значения с плавающей запятой, кроме того, можно задавать положение с помощью указателя на массив координатных значений. Затем описание сцены с помощью функций визуализации преобразуется в двухмерное изображение на таком устройстве вывода, как монитор. За исключением функции glRect, координаты каждой точки из набора точек, прямых или многоугольников задаются с помощью функции glVertex. А набор функций glVertex, определяющих каждый примитив, помещается между парой операторов glBegin/glEnd, где тип примитива определяется символьной константой, которая выступает аргументом функции glBegin. Если описание сцены состоит из множества закращенных многоугольных поверхностей, можно рационально создать изображение с помощью массива вершин OpenGL, в которых содержится вся геометрическая и другая необходимая информация.

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

ТАБЛИЦА 3.1. Таблица функций результирующих примитивов OpenGL и связанных с ними процедур

Функция

Описание

gluOrtho2D

Задается двухмерная внешняя система координат

glVertex*

Выбор координат. Эта функция должна помещаться между парой glBegin/glEnd

glBegin (GL_POINTS) ;

Строится одна или несколько точек, каждая из которых задается с помощью функции glVertex. Затем список координат закрывается с помощью оператора glEnd

Функция

Описание

glBegin (GL_LINES);

Изображается набор прямолинейных отрезков, координаты концов которых задаются с помощью функции glVertex. Затем список конечных точек закрывается с помощью оператора glEnd

glBegin (GL_LINE_STRIP);

Строится ломаная линия, которая задается с помощью такой же структуры, что и GL_LINES

glBegin (GL_LINE_LOOP);

Изображается замкнутая ломаная линия, которая задается с помощью такой же структуры, что и GL_LINES

glRect*

Строится закрашенный прямоугольник, лежащий в плоскости ху

glBegin (GL_POLYGON);

Изображается закрашенный многоугольник, вершины которого задаются с помощью функции glVertex и завершаются оператором glEnd

glBegin (GL_TRIANGLES);

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

glBegin

Изображается сеть закрашенных треугольников,

(GL_TRIANGLE_STRIP);

которая задается с помощью такой же структуры, что и GL_POLYGON

glBegin

Строится сеть закрашенных треугольников в ви

(GL_TRIANGLE_FAN);

де веера, где все треугольники соединяются в первой вершине, которая задается с помощью такой же структуры, что и GL_POLYGON

glBegin (GL_QUADS);

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

glBegin (GL_QUAD_STRIP);

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

glEnableClientState

Активизируется возможность создания массива

(GL_VERTEX_ARRAY);

вершин в OpenGL

glVertexPointer (size,

Задается массив координатных значений

type, stride, array);

glDrawElements (prim,

Изображается заданный тип примитива из мас

num, type, array)

сива данных

Функция

Описание

glNewList (listlD,

Набор команд объединяется в таблицу отображения, ко

listMode)

торая завершается оператором glEndList

glGenLists

Создается один или несколько идентификаторов таблиц отображений

glIsList

Функция, которая служит для запроса, использовался уже такой идентификатор таблицы отображения или нет

glCallList

Реализуется одна таблица отображения

glListBase

Задается значение смещения для массива идентификаторов таблиц отображений

glCallLists

Реализуется несколько таблиц отображений

glDeleteLists

Удаляется заданная последовательность таблиц отображений

glRasterPos*

Задается двух- или трехмерное текущее положение буфера кадра. Это положение используется как опорная точка для битового и пиксельного отображений

glBitmap (w, h, xO,

Задается бинарный узор, который должен переноситься

yO, xShift, yShift,

на пиксели, координаты которых определяются относи

pattern)

тельно текущего положения

glDrawPixels (w,

Задается цветовой узор, который должен переноситься

h, type, format,

на пиксели, координаты которых определяются относи

pattern)

тельно текущего положения

glDrawBuffer

Выбирается один или несколько буферов для записи пиксельного отображения

glReadPixels

Блок пикселей записывается в выбранный массив

glCopyPixels

Блок пикселей копируется из одной части буфера в другую

glLogicOp

Выбирается логическая операция для объединения двух

пиксельных массивов, после того, как такую возможность дает константа СЬ_СОЬ(Ж_ЬСЮ1С_ОР

glutBitmapCharacter

Задается шрифт и изображается растровый символ

(font, symbol);

glutStrokeCharacter

Задается шрифт и изображается эскизный символ

(font, symbol);

glutReshapeFunc

Задаются действия, которые должны выполняться при изменении размеров окна изображения

График данных, состоящий из ломаной линии и полимаркера, полученный с помощью процедуры ИпевгарЬ

Рис. 3.67. График данных, состоящий из ломаной линии и полимаркера, полученный с помощью процедуры ИпевгарЬ


⇐ вернуться назад | | далее ⇒