|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Specifying Callbacks
You can specify up to five callback functions for a tessellation. Any functions that are omitted are simply not called during the tessellation, and any information they might have returned to your program is lost. All are specified by the single routine gluTessCallback.
void gluTessCallback(GLUtriangulatorObj *tessobj, GLenum type, void (*fn)( ));
Associates the callback function fn with the tessellation object tessobj. The type of the callback is determined by the parameter type, which can be GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_END, or GLU_ERROR. The five possible callback functions have the following prototypes:
GLU_BEGIN void begin(GLenum type); GLU_EDGE_FLAG void edgeFlag(GLboolean flag); GLU_VERTEX void vertex(void *data); GLU_END void end(void); GLU_ERROR void error(GLenum errno);
To change a callback routine, simply call gluTessCallback with the new routine. To eliminate a callback routine without replacing it with a new one, pass gluTessCallback a null pointer for the appropriate function. As tessellation proceeds, these routines are called in a manner similar to the way you would use the OpenGL commands glBegin , glEdgeFlag, glVertex, and glEnd. The error callback is invoked during the tessellation only if something goes wrong.
The GLU_BEGIN callback is invoked with one of three possible parameters: GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, or GL_TRIANGLES. After this routine is called, and before the callback associated with GLU_END is called, some combination of the GLU_EDGE_FLAG and GLU_VERTEX callbacks is invoked. The associated vertices and edge flags are interpreted exactly as they are in OpenGL between glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP), or glBegin(GL_TRIANGLES) and the matching glEnd. Since edge flags make no sense in a triangle fan or triangle strip, if there is a callback associated with GLU_EDGE_FLAG, the GLU_BEGIN callback is called only with GL_TRIANGLES. The GLU_EDGE_FLAG callback works exactly analogously to the OpenGL glEdgeFlag call.
The error callback is passed a GLU error number. A character string describing the error can be obtained using the routine gluErrorString.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Определение Возвратов
Вы можете определить вплоть до пяти функций возврата для tessellation. Любые функции, которые опущены, просто не названн в течение tessellation, и любой информации они могли возвращать в вашу программу потерен. Все определены единственной программой gluTessCallback.
аннулируйте gluTessCallback(GLUtriangulatorObj *tessobj, тип GLenum, пустота (*fn)( ));
Соединяет функцию возврата fn с объектом tessellation tessobj. Тип возврата определен типом параметра, который может быть GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_END, или GLU_ERROR. Пять возможных функций возврата имеют следующие прототипы:
пустота GLU_BEGIN начинает(тип GLenum); пустота GLU_EDGE_FLAG edgeFlag(флаг GLboolean); недействительная вершина GLU_VERTEX(пустота *данные); недействительный конец GLU_END(пустота); недействительная ошибка GLU_ERROR(GLenum errno);
Для того, чтобы изменять программу возврата, просто назовите gluTessCallback с новой программой. Для того, чтобы устранять программу возврата не заменяя это новым, передайте gluTessCallback недействительный указатель для подходящей функции. Так как tessellation выручки, эти программы называются до некоторой степени подобным пути Вы должны использовать команды OpenGL glBegin , glEdgeFlag, glVertex, и glEnd. Возврат ошибки введен в течение tessellation только если что-то идет неправильно.
Возврат GLU_BEGIN введен одним из трех возможных параметров: GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, или GL_TRIANGLES. После того, как эта программа будет названа, и перед возвратом связанным GLU_END назван, некоторая комбинация GLU_EDGE_FLAG и возвратов GLU_VERTEX введена. Связанные грани и краевые флаги интерпретируются точно как они - в OpenGL между glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP), или glBegin(GL_TRIANGLES) и сопоставление glEnd. Поскольку краевые флаги не делают никаким значением в треугольнике раздуваться или полоса треугольника, если есть возврат связывался бы GLU_EDGE_FLAG, возврат GLU_BEGIN называется только с GL_TRIANGLES. Возврат GLU_EDGE_FLAG работает точно аналогично на вызов OpenGL glEdgeFlag.
Возврат ошибки пройден номер ошибки GLU. Символьная строка, описывающая ошибку может быть получена используя обычный gluErrorString.
| |
|
|
| |