Функции нельзя вызывать внутри пары gIBegin/glEnd.
Смотри также:
glColorPointer, glEdgeFlagPointer, gIGetPointerv, gllndexPointer, gINormalPointer, gITexCoordPointer, gIVertexPointer.
glEvalCoord
Вычисляет некоторую информацию по указанной точке кривой.
void glEvalCoordld (
GLdouble u ) ;
void glEvalCoord2d (
GLdouble u,
GLdouble v ) ; Варианты: glEvalCoordlf, glEvalCoord2f, glEvalCoord1{fd}v,
glEvalCoord2{fd}v.
Подробнее о параметрах, u, v
Определяют параметрические значения, необходимые для вычисления.
Эта функция использует предварительно разрешенный вычислитель, настроенный функцией gIMap, чтобы произвести вычисления вершины, цвета, нормали или текстурных координат, основанные на параметрических значениях и и v. Тип данных и моделируемые вызовы функций определяются функциями gIMap.
glEvalMesh
Вычисляет одномерную или двухмерную сетку точек или линий.
void glEvalMeshl (
GLenum mode,
GLint il,
GLint i2 ) ;
void glEvalMesh2 (
GLenum mode, GLint il,
GLint i2,
GLint jl,
GLint j2 ) ; Подробнее о параметрах.
mode
Определяет, как должна создаваться сетка:
• GL_POINT - по точкам;
• GL_LINE - по отрезкам;
• GL_FILL - по многоугольникам.
И, \2
Определяют первое и последнее значение для параметра и.
J1J2
Определяют первое и последнее значение для параметра v.
Эта функция используется с функцией gIMapGrid для эффективного создания сетки с равномерным распределением значений и и V. Фактически происходит вычисление контура и производство точек, отрезков или закрашенных многоугольников. Например, функция glMeshl заменяет следующий код.
glBegin(type) ;
for(i=il;i<=i2;i++)
glEvalCoordl(i*du+ul);
glEnd(); Где du=(u2-u1)/n, a n, u1 и u2 - аргументы последнего вызова функции gIMapGridI. Аналогично для glMesh2.
Для двухмерного случая, пусть du=(u2-u1)/n, dv=(v2-v1)/m, где п, и 1, u2, m, v1 и v2 - значения аргументов последнего вызова glMapGrid2. Тогда, если режим отображения GL_FILL, функция glEvalMesh2 эквивалентна следующему коду.
for(int j =j1;j<j2;j++)
{
glBegin(GL_QUAD_STRIP); for(int i=i1■i<=i2;i++)
{
glEvalCoord2(i*du+ul,j*dv+vl);
glEvalCoord2(i*du+ul,(j+1)*dv+vl);
}
glEnd();
}
Если режим GL_LINE, то функция эквивалентна следующему коду.
for(int j =j1;j <=j 2;j + +)
{
glBegin(GL_LINE_STRIP); for(int i=il;i<=i2;i++)
glEvalCoord2(i*du+ul,j *dv+vl); glEnd();
}
for(int i=il;i<=i2;i++)
{
glBegin(GL_LINE_STRIP); for(int j=j1;j<=j1;j++)
glEvalCoord2(i*du+ul,j *dv+vl); glEnd();
}
И наконец, код для режима GL_POINT.
glBegin(GL_POINTS); for(j =j1;j <=j 2;j++) for(i=il;i<=i2;i++)
glEvalCoord2(i*du+ul, j *dv+vl) ; glEnd(); Смотри также:
glEvalCoord, glEvalPoint, gIMap, gIMapGrid.
glEvalPoint
Вычисляет конкретную точку в сетке.
void glEvalPointl (
GLint i ) ;
void glEvalPoint2 (
GLint i, // первая переменная области сетки.
GLint j // вторая переменная области сетки.
) ; Функции gIMapGrid и glEvalMesh используются совместно, чтобы эффективно вычислить ряд равномерных точек на карте. Вызов glEvalPointl эквивалентен вызову
glEvalCoord1(i du+u1), где du=(u2-u1) / п, а п, u1 и u2 - аргументы последнего вызова функции gIMapGrid!