glVertex2s (1, 2);
glVertext3f (2.3, 1.5,0.2 );
GLdouble vect 0 ={1.0, 2.0, 3.0, 4.0}; glVertext4dv ( vect );

Для задания геометрических примитивов необходимо как-то выделить набор вершин, определяющих этот объект. Для этого служат процедуры glBegin() и glEnd(). Процедура

void gIBegin ( GLenum mode ); обозначает начало списка вершин, описывающих геометрический примитив. Тип примитива задается параметром mode, который принимает одно из следующих значений:

GL_POINTS - набор отдельных точек;

GL_LINES - пары вершин, задающих отдельные отрезки: Lv0V|V2…vn] и т. д.; GL_LINE_STRIP - незамкнутая ломаная v0v,v2…vn; GLLINELOOP - замкнутая ломаная v0viv2…vnv0; GLPOLYGON - простой выпуклый многоугольник;

GL_TRIANGLES - тройки вершин, интерпретируемые как вершины отдельных треугольников: v0VjV2, v3v4v5, …:

GLTRIANGLESTRIP - связанная полоса треуголышков^д7^, v2V|V3.v2v3v4

GL_TR1ANGLE_FAN - веер треугольников: v0ViV2, v0v2v3, v()v3v4, …;

GL_QUADS - четверки вершин, задающие выпуклые четырехугольники: v0vjv2v3, v4v5v6v7,… :

GL_QUAD_STRIP - полоса четырехугольников^^, v3v2, v2v3v5v4, v4v5v7v6,…

12. Работа с библиотекой OpenGL

Процедура void glEnd (); отмечает конец списка вершин.

Между командами glBegin () и glEnd () могут находиться команды задания различных атрибутов вершин glVertex* (), glColor* (), glNormal* (), glCallList (), glCallLists (), glTexCoord* (), glEdgeFlag () и glMaterial* (). Между командами glBegin () и glEnd () все остальные команды OpenGL недопустимы и приводят к возникновению ошибок.

Рассмотрим в качестве примера задание окружности.

glBegin ( GLJ.INE_.LOOP );
for ( int i = 0; i < N; i++ )
{
float angle =2*M_PI*i/N;
glVertex2f ( cos (angle), sin (angle) );
 }
glEnd ();

Хотя многие команды могут находиться между glBegin () и glEnd (), вершины генерируются при вызове glVertex* (). В момент вызова glVertex* () OpenGL присваивает создаваемой вершине текущий цвет, координаты текстуры, вектор нормали и т. д. Изначально «вектор нормали полагается равным (0,0,1), цвет полагается равным (1, 1, 1, 1), координаты текстуры полагаются равными нулю.


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