Общие положения
Точки, линии, треугольники,четырехугольники, многоугольники - простые объекты, из которых состоят любые сложные фигуры. В предыдущей главе мы рисовали сферу, конус и тор. OpenGL непосредственно не поддерживает функций для создания таких сложных объектов, т.е. таких функций нет в opengl32.dll. Эти функции есть в библиотеки утилит glu32.dll, и устроены они следующим образом. Для того чтобы нарисовать сферу функция auxSolidSphere использует функции из библиотеки 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 перечислены ниже в таблице. Далее вы указываете вершины, определяющие объкты указанного типа. Обычно вы будете задавать вершину одним из четырех способов.
glVertex2d(x,y); // две переменных типа double glVertex3d(x,y,z); // три переменных типа double glVertex2dv(array); // массив из двух переменных типа double glVertex3d(array); // массив из трех переменных типа double И наконец, вы вызваете glEnd, чтобы указать, что вы закончили рисовать объекты типа, указанного в glBegin. Далее мы подробно разберем создание всех примитивов.
Значение 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 | Многоугольник. |