|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Rendering Spheres, Cylinders, and Disks
The GLU includes a set of routines for drawing various simple surfaces (spheres, cylinders, disks, and parts of disks) in a variety of styles and orientations. These routines are described in detail in the OpenGL Reference Manual; their use is discussed briefly in the following paragraphs, and their prototypes are also listed.
To create a quadric object, use gluNewQuadric. (To destroy this object when you're finished with it, use gluDeleteQuadric.) Then specify the desired rendering style, as follows, with the appropriate routine (unless you're satisfied with the default values):
· Whether surface normals should be generated, and if so, whether there should be one normal per vertex or one normal per face: gluQuadricNormals. · Whether texture coodinates should be generated: gluQuadricTexture. · Which side of the quadric should be considered the outside and which the inside: gluQuadricOrientation. · Whether the quadric should be drawn as a set of polygons, lines, or points: gluQuadricDrawStyle.
After you've specified the rendering style, simply invoke the rendering routine for the desired type of quadric object: gluSphere, gluCylinder, gluDisk, or gluPartialDisk. If an error occurs during rendering, the error-handling routine you've specified with gluQuadricCallBack is invoked. It's better to use the *Radius, height, and similar arguments to scale the quadrics rather than the glScale command, so that unit-length normals that are generated don't have to be renormalized. Set the loops and stacks arguments to values other than 1 to force lighting calculations at a finer granularity, especially if the material specularity is high.
The prototypes are listed in three categories. Manage quadric objects:
GLUquadricObj* gluNewQuadric (void); void gluDeleteQuadric (GLUquadricObj *state); void gluQuadricCallback (GLUquadricObj *qobj, GLenum which, void (*fn)( ));
Control the rendering:
void gluQuadricNormals (GLUquadricObj *quadObject, GLenum normals); void gluQuadricTexture (GLUquadricObj *quadObject, GLboolean textureCoords); void gluQuadricOrientation (GLUquadricObj *quadObject, GLenum orientation); void gluQuadricDrawStyle (GLUquadricObj *quadObject, GLenum drawStyle);
Specify a quadric primitive:
void gluCylinder (GLUquadricObj *qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks); void gluDisk (GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops); void gluPartialDisk (GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle); void gluSphere (GLUquadricObj *qobj, GLdouble radius, GLint slices, GLint stacks);
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Предоставление Сфер, Цилиндров, и Диски
GLU Включает установку программ для чертежа различных простых поверхностей (сферы, цилиндры, диски, и части дисков) в ряде стилей и ориентации. Эти программы описываются подробно в СПРАВОЧНИКЕ OpenGL; их использование обсуждается кратко в следующих параграфах, и их прототипы также указаны.
Для того, чтобы создавать quadric объект, используйте gluNewQuadric. (Чтобы уничтожать этот объект когда Вы завершены с ним, использованием gluDeleteQuadric.) Затем определите желаемое предоставление стиля, следующим образом, с подходящей программой (если Вы не удовлетворены значением по умолчанию):
Независимо поверхностный нормальный должно быть сгенерировано, и если так, независимо там должно быть один нормально на вершину или один нормально на лицо: gluQuadricNormals. Независимо текстура coodinates должна быть сгенерирована: gluQuadricTexture. Какая сторона quadric должна считаться внешний и, которое inside: gluQuadricOrientation. Независимо quadric должно быть сделано как установка многоугольников, строк, или точки: gluQuadricDrawStyle.
После того, как Вы определили предоставляющий стиль, просто введите предоставляющую программу для желаемого типа quadric объекта: gluSphere, gluCylinder, gluDisk, или gluPartialDisk. Если ошибка происходит в течение предоставления, ошибка-обработка программы, Вы определили с gluQuadricCallBack введен. Это лучше должно использовать the *Радиус, высота, и аналогичные аргументы, чтобы масштабировать quadrics а не команду glScale, чтобы устройство-длина нормально, что не генерируется должно быть renormalized. Установите циклы и аргументы стеков в величины кроме 1, чтобы заставлять вычисления освещения в степени детализации finer, особенно если материальный specularity высокий.
Прототипы указаны в трех категориях. Управляйте quadric объектами:
GLUquadricObj* gluNewQuadric (ПУСТОТА); аннулируйте gluDeleteQuadric (GLUquadricObj *состояние); аннулируйте gluQuadricCallback (GLUquadricObj *qobj, GLenum какое, пустота (*fn)( ));
Управляйте предоставлением:
аннулируйте gluQuadricNormals (GLUquadricObj *quadObject, GLenum нормальные); недействительный gluQuadricTexture (GLUquadricObj *quadObject, GLboolean textureCoords); аннулируйте gluQuadricOrientation (GLUquadricObj *quadObject, ориентация GLenum); аннулируйте gluQuadricDrawStyle (GLUquadricObj *quadObject, GLenum drawStyle);
Определите quadric примитив:
аннулируйте gluCylinder (GLUquadricObj *qobj, GLdouble baseRadius, GLdouble topRadius, высота GLdouble, куски БЛЕСКА, стеков БЛЕСКА); аннулируйте gluDisk (GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, куски БЛЕСКА, циклов БЛЕСКА); аннулируйте gluPartialDisk (GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, куски БЛЕСКА, циклы БЛЕСКА, GLdouble startAngle, GLdouble sweepAngle); аннулируйте gluSphere (GLUquadricObj *qobj, радиус GLdouble, куски БЛЕСКА, стеков БЛЕСКА);
| |
|
|
| |