Координаты x,y,z и w - задают положение вершины в мировой системе координат. Последнюю координату OpenGL использует для перспективного деления: (x,y,z,w)->(x/w,y/w,z/w) и обратного преобразования. Таким образом, w координата представляет расстояние до наблюдателя и называется координатой глубины. OpenGI выдаст сообщение об ошибке, если w равно 0. OpenGL также не обрабатывает корректно отрицательные значения координаты W.
Цвет - в зависимости от режима OpenGI цвет задается непосредственно через RGBA компоненты или индексом цвета в палитре.
Текстурные координаты - задают тексель текстуры, соответствующий вершине.
Нормаль - задает ориентацию плоскости в окрестности вершины. Нормаль используется в уравнении освещения.
Флаг ребра - указывает, является ли вершина внутренней частью сложного объекта, или описывает контур.
В последней версии OpenGL добавлены координата тумана и вторичный цвет вершины.
Основной способ формирования моделей - это многократный вызов функции glVertex между вызовов функций gIBegin и glEnd. При этом группа вершин может использовать одни и те же значения атрибутов. Если данные о вершинах не определяются в процессе вывода модели, а известны заранее, то предпочтительнее воспользоваться механизмом массивов OpenGL. Во многих реализациях это работает быстрее, чем использование цикла внутри gIBegin/glEnd. В последней версии OpenGL или через расширение EXT_multi_draw_arrays механизм массивов дополнен функциями gIMultiDrawArrays и gIMultiDrawElements, облегчающими вывод моделей.
Список функций для вывода вершин:
gIColor - устанавливает текущий цвет вершины;
glEdgeFlag - устанавливает текущий флаг ребра;
gINormal - устанавливает текущую нормаль;
glTexCoord - устанавливает текущие текстурные координаты;
gIBegin - начать вывод вершин;
glEnd - закончить вывод вершин;
glVertex - выводит вершину;
glVertexPointer - определяет массив вершин; gINormalPointer - определяет массив нормалей; gIColorPointer - определяет массив компонент цветов вершин; gllndexPointer - определяет массив индексов цвета вершин; gITexCoordPointer - определяет массив текстурных координат; glEdgeFlagPointer - определяет массив флагов ребра; glArrayElement - отображает указанную вершину по индексу; gIDrawElements - отображает указанные вершины по индексам; gIDrawArrays - отображает все вершины в массиве.
/*
Демонстрация glBegin и gIDrawArrays.
Клавишей F1 изменяется способ построения.
Клавишами + и - изменяется режим построения.
*/
int mode=0; // текущий режим построения int type=0; // способ отображения int begin_mode[10]= // массив режимов построения {GL_POINTS,GL_LINES,GL_LINE_LOOP, GL_LINE_STRIР, gl_triangl.es, GL_TRIANGLE_FAN, GL_QUADS,GL_POLYGON, GL_TRIANGLE_STRIP,GL_QUAD_STRIP};
// массив вершин float points[8][2]=
{{-50, 50}, {0,70}, {40, 40 }, {30,0},
{50,-50},{0,-7 0},{-4 0,-4 0},{-0,0}};
// массив цветов float color[8][3]=
{{1,0,0},{1,0.5,0},{1,0.5,0.5},{1,1,0}, {0,1,0},{0,1,0.5},{0.5,1,0.5},{0,1,1}};
void example_init()
{
gl.set(l); // настройка OpenGL // цвет очищения буфера цвета glClearColor(1,1,1,1);