glTexGendv(GL_S, GL_EYE_PLANE, s_coeffs);
и такие же команды для координаты t с соответствующими изменениями.
Приложение
Приложение содержит информацию в основном прикладного характера, которая может понадобиться при изучении описанного выше материала.
Стандартные геометрические примитивы
Рассмотрим стандартные команды построения примитивов, которые реализованы в библиотеках GLU и GLUT.
Как уже было сказано, чтобы построить примитив из библиотеки GLU, надо сначала создать указатель на quadric- объект с помощью команды gluNewQuadric(), а затем вызвать одну из команд gluSphere(), gluCylinder(), gluDisk(), gluPartialDisk(). Рассмотрим эти команды отдельно:
void gluSphere(GLUquadricObj*qobj, GLdouble radius, GLint slices, GLint stacks)
Строит сферу с центром в начале координат и радиусом radius. При этом число разбиений сферы вокруг оси z задается параметром slices, а вдоль оси z параметром stacks.
void gluCylinder(GLUquadricObj*qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks)
Строит цилиндр без оснований (то есть кольцо), продольная ось параллельна оси z, заднее основание имеет радиус baseRadius, и расположено в плоскости z=0, переднее основание имеет радиус topRadius и расположено в плоскости z=height. Если задать один из радиусов равным нулю, то будет построен конус.
Параметры slices и stacks имеют тот же смысл, что и в предыдущей команде.
void gluDisk(GLUquadricObj*qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops)
Строит плоский диск (то есть круг) с центром в начале координат и радиусом outerRadius. При этом если значение innerRadius ненулевое, то в центре диска будет находиться отверстие радиусом innerRadius. Параметр slices задает число разбиений диска вокруг оси z, а параметр loops -число концентрических колец, перпендикулярных оси z.
void gluPartialDisk(GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle);
Отличие этой команды от предыдущей заключается в том, что она строит сектор круга, начальный и конечный углы которого отсчитываются против часовой стрелки от положительного направления оси y и задаются параметрами startAngle и sweepAngle. Углы измеряются в градусах.
Команды, проводящие построение примитивов из библиотеки GLUT, реализованы через стандартные примитивы OpenGL и GLU. Для построения нужного примитива достаточно произвести вызов соответствующей команды.
void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks)
void glutWireSphere(GLdouble radius, GLint slices, GLint stacks)
Команда glutSolidSphere() строит сферу, а glutWireSphere() - каркас сферы радиусом radius. Остальные параметры имеют тот же смысл, что и в предыдущих командах.
void glutSolidCube(GLdouble size)
void glutWireCube(GLdouble size)
Эти команды строят куб или каркас куба с центром в начале координат и длиной ребра size.
void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks)
void glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks)
Эти команды строят конус или его каркас высотой height и радиусом основания base, расположенный вдоль оси z. Основание находится в плоскости z=0. Остальные параметры имеют тот же смысл, что и в предыдущих командах.
void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings)
void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings)
Эти команды строят тор или его каркас в плоскости z=0. Внутренний и внешний радиусы задаются параметрами innerRadius, outerRadius. Параметр nsides задает число сторон в кольцах, составляющих ортогональное сечение тора, а rings- число радиальных разбиений тора.
void glutSolidTetrahedron(void)
void glutWireTetrahedron (void)
Эти команды строят тетраэдр (правильную треугольную пирамиду) или его каркас, при этом радиус описанной сферы вокруг него равен 1.