При программировании на языке OpenGL мы часто будем пользоваться базовыми типами переменных - GLf loat и GLint, - а не основными типами переменных языка С, такими как float и int. Эти типы определены в соответствующем заголовочном файле с помощью директивы tdef ine, например, так:

#define GLfloat float

Использование специализированных типов переменных в OpenGL обеспечивает дополнительную гибкость, поскольку позволяет переопределять эти типы (например, заменить формат числа с одинарной точностью на формат с удвоенной точностью) и изменять таким образом точность вычислений, не изменяя текст прикладной программы.

Вернемся к функции определения вершины. Форма

glVertex2i(GLint xi, GLint yi)

подходит для представления вершины на двухмерной плоскости, причем координатами являются целые числа. Представление

glVertex3f(GLfloat х, GLfloat у, GLfloat z)

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

GLfloat vertex[3];

а затем задать вершину в приведенном ниже формате:

glVertex3fv(vertex);

Набор вершин позволяет описать разнообразные геометрические объекты, причем для каждого вида объектов требуется определенное количество вершин. Язык OpenGL позволяет сгруппировать любое количество вершин в описании объекта с помощью пары связанных функций glBegin() и glEnd(). Аргумент функции glBegin() задает тип геометрического объекта, который определяется следующим далее набором вершин. Например, отрезок прямой задается следующим фрагментом программы:

2.1. Узор Серпинского

glBegin(GL_LINES);
glVertex2f(xl,yl);
glVertex2f(x2,y2); glEnd();

Те же вершины позволяют определить и пару геометрических объектов - точек:

glBegin(GL_POINTS);
glVertex2f(xl,yl);

glVertex2f(х2,у2); glEndO; Теперь можно приступить и к разработке программы, формирующей узор Серпинского. Будем считать, что все точки узора должны располагаться внутри единичного квадрата, левый нижний угол которого находится в точке (0, 0), - это обычный вариант, который при желании легко можно изменить.


⇐ Предыдущая| |Следующая ⇒