glBegin(GL_LINE_STRIP); for(i=0; i<100; i++) glEvalCoord2f( (float)j/100.0, (float)i/100.0); glEnd();
}
Если же желательно сформировать множество многоугольников, то фрагмент должен выглядеть так:
for(j=0; j<99; j++) {
glBegin(GL_QUAD_STRIP); for(i=0; i<=100; i++) {
glEvalCoord2f( (float)i/100.0, (float)j/100.0); glEvalCoord2f( (float)(i+l)/100.0, (float)j/100.0);
}
glEnd();
}
Для работы на равномерной сетке параметров следует использовать функции glMapGrid2*( ) и glEvalMesh2( ). Тогда в самое начало программы, в ту ее часть, которая отвечает за инициализацию, нужно включить такой фрагмент:
glMapGrid2f(100, 0.0, 1.0, 100, 0.0, 1.0); В функции отображения display ( ) нужно вызвать glEvalMesh2( ): glEvalMesh2(GL_FILL,0,100,0,100); Но существует еще одна проблема, на которую я хочу обратить ваше внимание. До тех пор, пока в программе не будет установлен режим учета освещения, сформированные многоугольники будут закрашены практически одинаково, и на экране на этом месте вы увидите темное пятно вместо выпуклой (или вогнутой) поверхности. Можно установить режим учета освещения способом, описанным в главе 6, но для работы алгоритмов тонирования необходима информация о направлении нормали в каждой обрабатываемой вершине. Эти нормали можно рассчитать и в прикладной программе, но лучше настроить OpenGL таким образом, чтобы система автоматически формировала их своими системными средствами. Для этого при настройке режима учета освещения нужно дополнительно вызвать функцию glEnable( ), передав ей в качестве аргумента константу GL_AUT0_N0RMAL:
glEnable(GL_AUT0_N0RMAL);
10.12.3. Отображение чайника Юта Для отображения на экране чайника Юта воспользуемся системными функциями обработки поверхностей Безье, имеющимися в составе библиотек OpenGL. Предположим, что информация о вершинах и порциях поверхности считана из файла в массив, объявленный следующим оператором:
GLfloat data[32][4][4];
Кривые и криволинейные поверхности
Если планируется сформировать проволочную модель чайника, следует инициализировать сетку в пространстве параметров: