Название: Компьютерная графика(Е.Н. Павенко)

Жанр: Информатика

Просмотров: 1428


1. примитивы opengl

Точки, линии, треугольники, четырехугольники, многоугольники – простые объекты, из которых состоят любые сложные фигуры. В предыдущей лаборатоной работе мы рисовали сферу, конус и тор. OpenGL непосредственно не поддерживает функций для создания таких сложных объектов, т.е. таких функций нет в opengl32.dll. Эти функции есть в библиотеке утилит glu32.dll, и устроены они следующим образом. Для того чтобы нарисовать сферу, функция glutSolidSphere использует функции из библиотеки glu32.dll, а те, в свою очередь, используют базовую библиотеку opengl32.dll и из линий или многоугольников строят сферу. Примитивы создаются следующим образом:

 glBegin(GLenum mode);     // указываем, что будем рисовать

  glVertex[2 3 4][s i f d](...); // первая вершина

                                              // тут остальные вершины

  glVertex[2 3 4][s i f d](...); // последняя вершина

 glEnd();                               // закончили рисовать примитив

Сначала Вы говорите, что будете рисовать – glBegin с соответсвующим параметром. Возможные значения mode перечислены ниже в табл. 2.1. Далее Вы указываете вершины, определяющие объекты указанного типа. Обычно, Вы будете задавать вершину одним из четырех способов.

glVertex2d(x,y);    // две переменных типа double

glVertex3d(x,y,z);  // три переменных типа double

glVertex2dv(array); // массив из двух переменных типа double

glVertex3dv(array);  // массив из трех переменных типа double

И, наконец, Вы вызваете glEnd(), чтобы указать, что Вы закончили рисовать объекты типа, указанного в glBegin(). Далее мы подробно разберем создание всех примитивов.

 

Таблица 2.1

Значение mode

Описание

GL_POINTS

Каждый вызов glVertex задает отдельную точку

GL_LINES

Каждая пара вершин задает отрезок

GL_LINE_STRIP

Рисуется ломаная

GL_LINE_LOOP

Рисуется ломаная, причем ее последняя точка соединяется с первой

GL_TRIANGLES

Каждые три вызова glVertex задают треугольник

GL_TRIANGLE_STRIP

Рисуются треугольники с общей стороной

GL_TRIANGLE_FAN

То же самое, но по другому правилу соединяются вершины

GL_QUADS

Каждые четыре вызова glVertex задают четырехугольник

GL_QUAD_STRIP

Четырехугольники с общей стороной

GL_POLYGON

Многоугольник