Especificando retornos de chamada
Você pode especificar até cinco funções de retorno de chamada para um mosaico. Funções não especificadas não serão chamadas durante o mosaico e você não receberá nenhuma informação que elas possam ter retornado. Você especifica as funções de retorno de chamada com gluTessCallback.
A função gluTessCallback associa a função de retorno de chamada fn com o objeto de mosaico tessobj. O tipo de retorno de chamada é determinado pelo parâmetro type, que pode ser GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_END ou GLU_ERROR. As cinco funções de retorno de chamada possíveis têm os seguintes protótipos.
Função de retorno de chamada | Protótipo |
---|---|
GLU_BEGIN | void begin(GLenumtype ); |
GLU_EDGE_FLAG | void edgeFlag(GLbooleanflag ); |
GLU_VERTEX | void vertex(**void ***data ); |
GLU_END | void end( void ); |
GLU_ERROR | void error(GLenumerrno ); |
Para alterar uma função de retorno de chamada, chame gluTessCallback com a nova função. Para eliminar uma função de retorno de chamada sem substituí-la por uma nova, passe a gluTessCallback um ponteiro nulo para a função apropriada.
À medida que o mosaico prossegue, as funções de retorno de chamada são chamadas de maneira semelhante à maneira como você usaria as funções OpenGL glBegin, glEdgeFlag, glVertex e glEnd.
A função de retorno de chamada GLU_BEGIN é invocada com um dos três parâmetros possíveis:
- GL_TRIANGLE_FAN
- GL_TRIANGLE_STRIP
- GL_TRIANGLES
Depois de chamar a função de retorno de chamada GLU_BEGIN e antes de chamar, a função de retorno de chamada associada a GLU_END, alguma combinação dos retornos de chamada GLU_EDGE_FLAG e GLU_VERTEX é invocada. Os vértices e sinalizadores de borda associados são interpretados exatamente como estão no OpenGL entre glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP) ou glBegin(GL_TRIANGLES**)** entre e glEnd correspondente.
Como os sinalizadores de borda não fazem sentido em um ventilador triangular ou em uma faixa triangular, se houver uma função de retorno de chamada associada a GLU_EDGE_FLAG, o retorno de chamada GLU_BEGIN é chamado apenas com GL_TRIANGLES. A função de retorno de chamada GLU_EDGE_FLAG funciona de forma análoga à função glEdgeFlag OpenGL.
Se houver um erro durante o mosaico, a função de retorno de chamada de erro será invocada. A função de retorno de chamada de erro recebe um número de erro GLU. Você pode obter uma cadeia de caracteres descrevendo o erro com a função gluErrorString.