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