Delen via


Definiëren van callbacks

U kunt maximaal vijf callbackfuncties opgeven voor een tessellatie. Functies die u niet opgeeft, worden niet aangeroepen tijdens de tesselatie en u krijgt geen informatie die ze mogelijk hebben geretourneerd. U geeft de callback-functies op met gluTessCallback.

De functie gluTessCallback koppelt de callback-functie fn aan het tessellation-object tessobj. Het type callback wordt bepaald door de parameter type, dat kan zijn GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_ENDof GLU_ERROR. De vijf mogelijke callbackfuncties hebben de volgende prototypes.

Callbackfunctie Prototype
GLU_BEGIN voidbegin(GLenumtype );
GLU_EDGE_FLAG voidedgeFlag(GLbooleanvlag);
GLU_VERTEX hoekpunt(**void **gegevens );
GLU_END voidend(void);
GLU_ERROR fout(GLenumerrno );

 

Als u een callback-functie wilt wijzigen, roept u gluTessCallback- aan met de nieuwe functie. Als u een callback-functie wilt elimineren zonder deze te vervangen door een nieuwe, geef dan een null pointer door aan gluTessCallback voor de betreffende functie.

Naarmate de stelling vordert, worden de callbackfuncties aangeroepen op een manier die vergelijkbaar is met de manier waarop u de OpenGL-functies zou gebruiken glBegin, glEdgeFlag, glVertexen glEnd.

De GLU_BEGIN callback-functie wordt aangeroepen met een van de drie mogelijke parameters:

  • GL_TRIANGLE_FAN
  • GL_TRIANGLE_STRIP
  • GL_TRIANGLES

Na het aanroepen van de GLU_BEGIN callback-functie en voordat u de callback-functie aanroept die is gekoppeld aan GLU_END, wordt een combinatie van de GLU_EDGE_FLAG en GLU_VERTEX callbacks aangeroepen. De bijbehorende hoekpunten en randvlagmen worden precies geïnterpreteerd zoals ze zich in OpenGL bevinden tussen glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP) of glBegin(GL_TRIANGLES**)** en de overeenkomende glEnd.

Omdat randvlagmen niet logisch zijn in een driehoekventilator of driehoeksstrook, wordt de GLU_BEGIN callback alleen aangeroepen met GL_TRIANGLESals er een callback-functie aan GLU_EDGE_FLAGis gekoppeld. De GLU_EDGE_FLAG callback-functie werkt vergelijkbaar met de functie OpenGL glEdgeFlag.

Als er een fout optreedt tijdens de tessellation, wordt de callback-functie voor fouten aangeroepen. De error callback-functie ontvangt een GLU-foutnummer. U kunt een tekenreeks verkrijgen die de fout beschrijft met de functie gluErrorString.