Condividi tramite


Specifica dei callback

È possibile specificare fino a cinque funzioni di callback per una tassellatura. Tutte le funzioni non specificate non vengono chiamate durante la tassellatura e non si ottengono informazioni che potrebbero essere state restituite. Specificare le funzioni di callback con gluTessCallback.

La funzione gluTessCallback associa la funzione di callback fn all'oggetto a mosaico tessobj. Il tipo di callback è determinato dal tipo di parametro, che può essere GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_END o GLU_ERROR. Le cinque possibili funzioni di callback hanno i prototipi seguenti.

Funzione di callback Prototipo
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 );

 

Per modificare una funzione di callback, chiamare gluTessCallback con la nuova funzione. Per eliminare una funzione di callback senza sostituirla con una nuova, passare gluTessCallback un puntatore Null per la funzione appropriata.

Man mano che procede la tassellatura, le funzioni di callback vengono chiamate in modo simile al modo in cui si userebbero le funzioni OpenGL glBegin, glEdgeFlag, glVertex e glEnd.

La funzione di callback GLU_BEGIN viene richiamata con uno dei tre parametri possibili:

  • GL_TRIANGLE_FAN
  • GL_TRIANGLE_STRIP
  • GL_TRIANGLES

Dopo aver chiamato la funzione di callback GLU_BEGIN e prima di chiamare la funzione di callback associata a GLU_END, viene richiamata una combinazione di GLU_EDGE_FLAG e GLU_VERTEX callback. I vertici e i flag di arco associati vengono interpretati esattamente come si trovano in OpenGL tra glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP) o glBegin(GL_TRIANGLES**)** e glEnd corrispondenti.

Poiché i flag di bordo non hanno senso in una ventola di triangoli o in una striscia di triangoli, se è presente una funzione di callback associata a GLU_EDGE_FLAG, il callback GLU_BEGIN viene chiamato solo con GL_TRIANGLES. La funzione di callback GLU_EDGE_FLAG funziona in modo analogo alla funzione OpenGL glEdgeFlag .

Se si verifica un errore durante la tassellatura, viene richiamata la funzione di callback di errore. Alla funzione di callback di errore viene passato un numero di errore GLU. È possibile ottenere una stringa di caratteri che descrive l'errore con la funzione gluErrorString.