Função gluTessCallback
A função gluTessCallback define um retorno de chamada para um objeto de mosaico.
void WINAPI gluTessCallback(
GLUtesselator *tess,
GLenum which,
void (CALLBACK *fn)()
);
-
Tess
-
O objeto tessellation (criado com gluNewTess).
-
Que
-
O retorno de chamada que está sendo definido. Os seguintes valores são válidos: GLU_TESS_BEGIN, GLU_TESS_BEGIN_DATA, GLU_TESS_EDGE_FLAG, GLU_TESS_EDGE_FLAG_DATA, GLU_TESS_VERTEX, GLU_TESS_VERTEX_DATA, GLU_TESS_END, GLU_TESS_END_DATA, GLU_TESS_COMBINE, GLU_TESS_COMBINE_DATA, GLU_TESS_ERROR e GLU_TESS_ERROR_DATA.
Para obter mais informações sobre esses retornos de chamada, consulte a seção Comentários a seguir.
-
fn
-
A função a ser chamada.
Essa função não retorna um valor.
Use gluTessCallback para especificar um retorno de chamada a ser usado por um objeto de mosaico. Se o retorno de chamada especificado já estiver definido, ele será substituído. Se fn for NULL, o retorno de chamada existente ficará indefinido.
O objeto tessellation usa esses retornos de chamada para descrever como um polígono especificado é dividido em triângulos.
Há duas versões de cada retorno de chamada, uma com dados de polígono que você pode definir e outra sem. Se ambas as versões de um retorno de chamada específico forem especificadas, o retorno de chamada com os dados de polígono especificados será usado. O parâmetro polygon_data de gluTessBeginPolygon é uma cópia do ponteiro que foi especificada quando gluTessBeginPolygon foi chamado.
Veja a seguir os retornos de chamada válidos:
Callback | Descrição |
---|---|
GLU_TESS_BEGIN | O retorno de chamada GLU_TESS_BEGIN é invocado como glBegin para indicar o início de um primitivo (triângulo). A função usa um único argumento do tipo GLenum. Se você definir a propriedade GLU_TESS_BOUNDARY_ONLY como GL_FALSE, o argumento será definido como GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP ou GL_TRIANGLES. Se você definir a propriedade GLU_TESS_BOUNDARY_ONLY como GL_TRUE, o argumento será definido como GL_LINE_LOOP. O protótipo de função para esse retorno de chamada é o seguinte: voidbegin (tipoGLenum); |
GLU_TESS_BEGIN_DATA | GLU_TESS_BEGIN_DATA é o mesmo que o retorno de chamada GLU_TESS_BEGIN, exceto que ele usa um argumento de ponteiro adicional. Esse ponteiro é idêntico ao ponteiro opaco fornecido quando você chama gluTessBeginPolygon. O protótipo de função para esse retorno de chamada é: void beginData (tipoGLenum, void * polygon_data); |
GLU_TESS_EDGE_FLAG | O retorno de chamada GLU_TESS_EDGE_FLAG é semelhante a glEdgeFlag. A função usa um único sinalizador booliano que indica quais bordas estão no limite do polígono. Se o sinalizador for GL_TRUE, cada vértice a seguir iniciará uma borda que está no limite do polígono; ou seja, uma borda que separa uma região interior de um exterior. Se o sinalizador for GL_FALSE, cada vértice a seguir iniciará uma borda que está no interior do polígono. O retorno de chamada GLU_TESS_EDGE_FLAG (se definido) é invocado antes que o primeiro retorno de chamada de vértice seja feito. Como os ventiladores de triângulo e as faixas de triângulo não dão suporte a sinalizadores de borda, o retorno de chamada inicial não é chamado com GL_TRIANGLE_FAN ou GL_TRIANGLE_STRIP se um retorno de chamada de sinalizador de borda for fornecido. Em vez disso, os ventiladores e tiras são convertidos em triângulos independentes. O protótipo de função para esse retorno de chamada é: voidedgeFlag (sinalizador GLboolean); |
GLU_TESS_EDGE_FLAG_DATA | O retorno de chamada GLU_TESS_EDGE_FLAG_DATA é o mesmo que o retorno de chamada GLU_TESS_EDGE_FLAG, exceto pelo argumento de ponteiro adicional. Esse ponteiro é idêntico ao ponteiro opaco fornecido quando você chama gluTessBeginPolygon. O protótipo de função para esse retorno de chamada é: void edgeFlagData (sinalizador GLboolean, void * polygon_data); |
GLU_TESS_VERTEX | O retorno de chamada GLU_TESS_VERTEX é invocado entre os retornos de chamada de início e fim. É semelhante a glVertex e define os vértices dos triângulos criados pelo processo de mosaico. A função usa um ponteiro como seu único argumento. Esse ponteiro é idêntico ao ponteiro opaco que você forneceu quando definiu o vértice (consulte gluTessVertex). O protótipo de função para esse retorno de chamada é: vérticevoid (void * vertex_data); |
GLU_TESS_VERTEX_DATA | O GLU_TESS_VERTEX_DATA é o mesmo que o retorno de chamada GLU_TESS_VERTEX, exceto pelo argumento de ponteiro adicional. Esse ponteiro é idêntico ao ponteiro opaco fornecido quando você chama gluTessBeginPolygon. O protótipo de função para esse retorno de chamada é: voidvertexData (void * vertex_data, void * polygon_data); |
GLU_TESS_END | O retorno de chamada GLU_TESS_END serve à mesma finalidade que glEnd. Indica o fim de um primitivo e não usa argumentos. O protótipo de função para esse retorno de chamada é: void end (void); |
GLU_TESS_END_DATA | O retorno de chamada GLU_TESS_END_DATA é o mesmo que o retorno de chamada GLU_TESS_END, exceto pelo argumento de ponteiro adicional. Esse ponteiro é idêntico ao ponteiro opaco fornecido quando você chama gluTessBeginPolygon. O protótipo de função para esse retorno de chamada é: void endData (void * polygon_data); |
GLU_TESS_COMBINE | Chame o retorno de chamada GLU_TESS_COMBINE para criar um novo vértice quando o mosaico detectar uma interseção ou mesclar recursos. A função usa quatro argumentos: uma matriz de três elementos, cada um do tipo Gldouble. Uma matriz de quatro ponteiros. Uma matriz de quatro elementos, cada um do tipo GLfloat. Um ponteiro para um ponteiro. O protótipo de função para esse retorno de chamada é: voidcombine(GLdoublecoords[3], void * vertex_data[4], GLfloatweight[4], void **outData); O vértice é definido como uma combinação linear de até quatro vértices existentes, armazenados em vertex_data. Os coeficientes da combinação linear são dados por peso; esses pesos sempre somam 1,0. Todos os ponteiros de vértice são válidos mesmo quando alguns dos pesos são zero. O parâmetro coords fornece o local do novo vértice. Aloque outro vértice, interpole parâmetros usando vertex_data e peso e retorne o novo ponteiro de vértice em outData. Esse identificador é fornecido durante a renderização de retornos de chamada. Libere a memória algum tempo depois de chamar gluTessEndPolygon. Por exemplo, se o polígono estiver em um plano arbitrário no espaço tridimensional e você associar uma cor a cada vértice, o retorno de chamada GLU_TESS_COMBINE poderá ser semelhante ao seguinte: Quando o mosaico detecta uma interseção, o retorno de chamada GLU_TESS_COMBINE ou GLU_TESS_COMBINE_DATA (veja abaixo) deve ser definido e deve gravar um ponteiro não NULL em dataOut. Caso contrário, ocorrerá o erro GLU_TESS_NEED_COMBINE_CALLBACK e nenhuma saída será gerada. (Esse é o único erro que pode ocorrer durante o mosaico e a renderização.) |
GLU_TESS_COMBINE_DATA | O retorno de chamada GLU_TESS_COMBINE_DATA é o mesmo que o retorno de chamada GLU_TESS_COMBINE, exceto pelo argumento de ponteiro adicional. Esse ponteiro é idêntico ao ponteiro opaco fornecido quando você chama gluTessBeginPolygon. O protótipo de função para esse retorno de chamada é: voidcombineData (GLdoublecoords[3], void *vertex_data[4], GLfloatweight[4], void **outData, void * polygon_data); |
GLU_TESS_ERROR | O retorno de chamada GLU_TESS_ERROR é chamado quando um erro é encontrado. O único argumento é do tipo GLenum; indica o erro específico que ocorreu e é definido como um dos seguintes: GLU_TESS_MISSING_BEGIN_POLYGON GLU_TESS_MISSING_END_POLYGON GLU_TESS_MISSING_BEGIN_CONTOUR GLU_TESS_MISSING_END_CONTOUR GLU_TESS_COORD_TOO_LARGE GLU_TESS_NEED_COMBINE_CALLBACK Chame gluErrorString para recuperar cadeias de caracteres que descrevem esses erros. O protótipo de função para esse retorno de chamada é o seguinte: voiderror (GLenumerrno); A biblioteca GLU se recupera dos quatro primeiros erros inserindo a chamada ou as chamadas ausentes. GLU_TESS_COORD_TOO_LARGE indica que alguma coordenada de vértice excedeu a constante predefinida GLU_TESS_MAX_COORD em valor absoluto e que o valor foi fixado. (Os valores de coordenadas devem ser pequenos o suficiente para que dois possam ser multiplicados juntos sem estouro.) GLU_TESS_NEED_COMBINE_CALLBACK indica que a mosaico detectou uma interseção entre duas bordas nos dados de entrada e o retorno de chamada GLU_TESS_COMBINE ou GLU_TESS_COMBINE_DATA não foi fornecido. Nenhuma saída será gerada. |
GLU_TESS_ERROR_DATA | O retorno de chamada GLU_TESS_ERROR_DATA é o mesmo que o retorno de chamada GLU_TESS_ERROR, exceto que ele usa um argumento de ponteiro adicional. Esse ponteiro é idêntico ao ponteiro opaco fornecido quando você chama gluTessBeginPolygon. O protótipo de função para esse retorno de chamada é: voiderrorData (GLenumerrno, void * polygon_data); |
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows 2000 Server [somente aplicativos da área de trabalho] |
Cabeçalho |
|
Biblioteca |
|
DLL |
|