Chapter 3
Рисуем простые объекты
3.1 Общие положения
Точки, линии, треугольники,четырехугольники, многоугольники - простые объекты,
из которых состоят любые сложные фигуры. В предыдущей главе
мы рисовали сферу, конус и тор. 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 | Многоугольник. |
|