void myinit() {
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0);

Вычерчивание отрезков выполняется в функции отображения display (): for(k=0;k<32;k++) {

glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
idata[k][0][0][0]); for (j=0; j <= 8; j++) {
glBegin(GL_LINE_STRIP); for (i=0; i <= 30; i++)
glEvalCoord2f((GLfloat)i/30.0, (GLfloat)j/8.0); glEnd();
glBegin(GL_LINE_STRIP); for (i=0; i <= 30; i++)
glEvalCoord2f((GLfloat)j/8.0, (GLfloat)i/30.0); glEnd();
}
}

Обратите внимание на то, что для формирования на экране каждой порции поверхности нужно отдельно обращаться к функции glMap2f(). Если же планируется сформировать закрашенное изображение чайника, процедура инициализации будет выглядеть посложнее. В ней потребуется установить режим учета освещения и настроить свойства материала поверхности.

void myinit() {
glEnable(GL_MAP2_VERTEX_3); glEnable(GL_AUT0_N0RMAL); glMapGrid2f(8, 0.0, 1.0, 8, 0.0, 1.0); glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING); glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); glLightfv(GL_LIGHT0, GL_POSITION, position);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);

10.12. Кривые и поверхности в OpenGL

Собственно отображение организуется двумя операторами в функции display (): for(k=0;k<32;k++) {

glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
&data[k][0][0][0]);
glEvalMesh2(GL_FILL,0,8,0,8);
}

10.12.4. Функции отображения NURBS-кривых и поверхностей Функции вычисления полиномов можно использовать и на неравномерной сетке задания параметров при формировании четырехмерных кривых и поверхностей. Поскольку любой полиномиальный объект можно привести к форме Безье, подобрав подходящий ансамбль опорных точек, то в нашем распоряжении имеется полный арсенал средств, необходимых для определения NURBS-кривых и поверхностей. Причем в прикладной программе не нужно проходить через все этапы формирования таких объектов - в составе библиотеки утилит OpenGL, GLU имеется набор функций для работы с NURBS-объектами. Эти функции позволяют специфицировать в прикладной программе множество дополнительных параметров, настраивая которые прикладная программа может управлять режимом отображения объекта на экране. Для работы с NURBS-поверхностями имеется пять функций:


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