Прототип:
void glBegin(GLenum mode);
Параметры:
mode : режим вывода примитива, либо примитивов, представленных вершинами, находящимися между glBegin/glEnd.
Константы поддерживаются следующие: GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES,
GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON.
Прототип:
void glEnd(void);
Описание:
glBegin и glEnd ограничивает группу вершин и представляет их в виде определенного примитива, либо множества
примитивов. Возмем две переменные: n - номер вершины, и N общее количество вершин.
GL_POINTS представляет каждую вершину n в одну точку. N примитивов отрисуется.
GL_LINES представляет пару вершин 2n-1 и 2n как одну линию. N/2 примитивов отрисуется.
GL_LINE_STRIP представляет пару вершин n и n+1 как одну линию. N-1 примитивов отрисуется.
GL_LINE_LOOP представляет пару вершин n и n+1 как одну линию. Но в этом случае рисуется еще одна линия, соединяющая
первую вершину с последней, таким образом общее количество примитивов, выведенных на экран будет N.
GL_TRIANGLES представляет тройку вершин 3n-2, 3n-1 и 3n как одиночный треугольник. N/3 примитивов отрисуется.
GL_TRIANGLE_STRIP представляет тройку вершин n, n+1 и n+2 как одиночный треугольник. N-2 примитивов отрисуется.
GL_TRIANGLE_FAN представляет тройку вершин 1, n+1 и n+2 как одиночный треугольник. N-2 примитивов отрисуется.
GL_QUADS каждая четверка вершин 4n-3, 4n-2, 4n-1 и 4n образует четырехугольник. N/4 примитивов отрисуется.
GL_QUAD_STRIP каждая четверка вершин 2n-1, 2n, 2n+2 и 2n+1 образует четырехугольник. N/2-1 примитивов отрисуется.
GL_POLYGON все вершины от 1 до N образуют выпуклый многоугольник.
Между glBegin/glEnd могут быть вызваны следующие функции: glVertex, glColor, glIndex, glNormal, glTexCoord,
glEvalCoord, glEvalPoint, glMaterial, glEdgeFlag, также допустимы вызовы glCallList, glCallLists, но
только содержащие одну или несколько из вышеперечисленных команд. Любая другая функция OGL, вызванная между
glBegin/glEnd будет проигнорированна и флаг ошибки установлен.
Независимо, от значения mode ограничения на количество вершин, находящихся между glBegin/glEnd нет. Незавершенные
линии, треугольники, четырехугольники и многоугольники не отрисовываются.
Минимальное количество вершин необходимых для отрисовки линий 2, треугольников 3, четырехугольнков 4,
многоугольников 3.
Ошибки:
GL_INVALID_ENUM возникает когда mode имеет недопустимое значение.
GL_INVALID_OPERATION возникает при вызове glBegin между парой glBegin/glEnd, либо вызове glEnd до вызова
glBegin.
GL_INVALID_OPERATION возникает при вызове отличной от вышеперечисленных функции между glBegin/glEnd.
|