Chapter 3
Рисуем простые объекты
3.4 Треугольники
Для треугольника можно задавать те же параметры, что и для линии, плюс есть еще
одна функция glPolygonMode.
Она устанавливает опции для отрисовки многоугольника. Первый параметр может
принимать значения - GL_FRONT, GL_BACK и GL_FRONT_AND_BACK. Второй параметр
указывает, как будет рисоваться многоугольник. Он принимает значения: GL_POINT(рисуются
только точки), GL_LINE(рисуем линии) и GL_FILL(рисуем заполненный многоугольник).
Первый параметр указывает: к лицевой, тыльной или же к обеим сторонам применяется
опция, заданная вторым параметром. Треугольники можно рисовать, передав
GL_TRIANGLE_STRIP или GL_TRIANGLE_FAN в glBegin. В первом случае, первая,
вторая и третья вершины задают первый треугольник. Вторая, третья и четвертая
вершина - второй треугольник. Третья, четвертая и пятая вершина - третий
треугольник и т.д. Вершины n, n+1 и n+2 определят n-ый треугольник. Во втором
случае, первая, вторая и третья вершина задают первый треугольник. Первая,
третья и четвертая вершины задают второй треугольник и т.д. Вершины 1, n+1,
n+2 определяют n-ый треугольник. Далее следует пример с комментариями.
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // см. выше
glBegin(GL_TRIANGLES);
glColor3d(1,0,0); // рисуем треугольник
glVertex3d(-4,2,0);
glVertex3d(-3,2.9,0);
glVertex3d(-2,2,0);
glEnd();
glLineWidth(2);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); //рисуем
// проволочные треугольники
glBegin(GL_TRIANGLE_STRIP); // обратите внимание на порядок
// вершин
glColor3d(0,1,0);
glVertex3d(1,2,0);
glVertex3d(0,2.9,0);
glVertex3d(-1,2,0);
glVertex3d(0,1.1,0);
glEnd();
glEnable(GL_LINE_STIPPLE);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBegin(GL_TRIANGLE_FAN);
glColor3d(0,0,1);
glVertex3d(4,2,0);
glVertex3d(2.6,2.8,0);
glVertex3d(2,2,0);
glVertex3d(3,1.1,0);
glEnd();
glDisable(GL_LINE_STIPPLE);
|