Compartilhar via


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.