gluTessCallback-Funktion
Die gluTessCallback-Funktion definiert einen Rückruf für ein Mosaikobjekt.
Syntax
void WINAPI gluTessCallback(
GLUtesselator *tess,
GLenum which,
void (CALLBACK *fn)()
);
Parameter
-
Tess
-
Das Mosaikobjekt (erstellt mit gluNewTess).
-
welche
-
Der Rückruf, der definiert wird. Die folgenden Werte sind gültig: 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 UND _ GLU TESS ERROR _ _ _ DATA.
Weitere Informationen zu diesen Rückrufen finden Sie im folgenden Abschnitt "Hinweise".
-
fn
-
Die funktion, die aufgerufen werden soll.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Bemerkungen
Verwenden Sie gluTessCallback, um einen Rückruf anzugeben, der von einem Mosaikobjekt verwendet werden soll. Wenn der angegebene Rückruf bereits definiert ist, wird er ersetzt. Wenn fn NULL ist, wird der vorhandene Rückruf nicht definiert.
Das Mosaikobjekt verwendet diese Rückrufe, um zu beschreiben, wie ein von Ihnen angegebenes Polygon in Dreiecke zerbrochen wird.
Es gibt zwei Versionen jedes Rückrufs, eine mit Polygondaten, die Sie definieren können, und eine ohne. Wenn beide Versionen eines bestimmten Rückrufs angegeben werden, wird der Rückruf mit den von Ihnen angegebenen Polygondaten verwendet. Der _ Polygondatenparameter von gluTessBeginPolygon ist eine Kopie des Zeigers, der angegeben wurde, als gluTessBeginPolygon aufgerufen wurde.
Im Folgenden finden Sie gültige Rückrufe:
| Rückruf | BESCHREIBUNG |
|---|---|
| GLU_TESS_BEGIN | Der GLU_TESS_BEGIN rückruf wird wie glBegin aufgerufen, um den Anfang eines Primitiven (Dreiecks) anzugeben. Die Funktion verwendet ein einzelnes Argument vom Typ GLenum. Wenn Sie die eigenschaft GLU_TESS_BOUNDARY_ONLY auf GL_FALSE festlegen, wird das Argument entweder auf GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP oder GL_TRIANGLES. Wenn Sie die eigenschaft GLU_TESS_BOUNDARY_ONLY auf GL_TRUE festlegen, wird das Argument auf GL_LINE_LOOP. Der Funktionsprototyp für diesen Rückruf lautet wie folgt: voidbegin (GLenum-Typ); |
| GLU_TESS_BEGIN_DATA | GLU_TESS_BEGIN_DATA ist mit dem Rückruf GLU_TESS_BEGIN identisch, mit der Ausnahme, dass ein zusätzliches Zeigerargument verwendet wird. Dieser Zeiger ist identisch mit dem nicht transparenten Zeiger, der beim Aufrufen von gluTessBeginPolygon bereitgestellt wird. Der Funktionsprototyp für diesen Rückruf ist: voidbeginData (GLenum-Typ, void * polygon_data); |
| GLU_TESS_EDGE_FLAG | Der GLU_TESS_EDGE_FLAG-Rückruf ähnelt glEdgeFlag. Die Funktion verwendet ein einzelnes boolesches Flag, das angibt, welche Ränder sich an der Polygongrenze befinden. Wenn das Flag GL_TRUE ist, beginnt jeder folgende Scheitelpunkt mit einem Rand, der sich an der Polygongrenze befindet. Das heißt, ein Rand, der einen inneren Bereich von einem äußeren bereich trennt. Wenn das Flag GL_FALSE ist, beginnt jeder folgende Scheitelpunkt mit einem Rand, der sich im Polygoneninneren befindet. Der GLU_TESS_EDGE_FLAG (sofern definiert) wird aufgerufen, bevor der erste Scheitelpunktrückruf erfolgt. Da Dreiecks-Lüfter und Dreiecksstreifen keine Edgeflags unterstützen, wird der Begin-Rückruf nicht mit GL_TRIANGLE_FAN oder GL_TRIANGLE_STRIP aufgerufen, wenn ein Edgeflagrückruf bereitgestellt wird. Stattdessen werden die Lüfter und Strips in unabhängige Dreiecke konvertiert. Der Funktionsprototyp für diesen Rückruf ist: voidedgeFlag (GLbooleanflag); |
| GLU_TESS_EDGE_FLAG_DATA | Der GLU_TESS_EDGE_FLAG_DATA-Rückruf ist identisch mit dem GLU_TESS_EDGE_FLAG Rückruf, mit dem Ausnahme, dass ein zusätzliches Zeigerargument verwendet wird. Dieser Zeiger ist identisch mit dem nicht transparenten Zeiger, der beim Aufrufen von gluTessBeginPolygon bereitgestellt wird. Der Funktionsprototyp für diesen Rückruf ist: voidedgeFlagData (GLbooleanflag, void * polygon_data); |
| GLU_TESS_VERTEX | Der GLU_TESS_VERTEX rückruf wird zwischen den Start- und Endrückrufen aufgerufen. Er ähnelt glVertex und definiert die Scheitelpunkte der Dreiecke, die vom Mosaikprozess erstellt werden. Die Funktion verwendet einen Zeiger als einziges Argument. Dieser Zeiger ist identisch mit dem nicht transparenten Zeiger, den Sie beim Definieren des Scheitelpunkts angegeben haben (siehe gluTessVertex). Der Funktionsprototyp für diesen Rückruf ist: voidvertex (void * vertex_data); |
| GLU_TESS_VERTEX_DATA | Die GLU_TESS_VERTEX_DATA ist identisch mit dem GLU_TESS_VERTEX Rückruf, mit dem Ausnahme, dass ein zusätzliches Zeigerargument verwendet wird. Dieser Zeiger ist identisch mit dem nicht transparenten Zeiger, der beim Aufrufen von gluTessBeginPolygon bereitgestellt wird. Der Funktionsprototyp für diesen Rückruf ist: voidvertexData (void * vertex_data, void * polygon_data); |
| GLU_TESS_END | Der GLU_TESS_END-Rückruf dient dem gleichen Zweck wie glEnd. Sie gibt das Ende eines Primitiven an und nimmt keine Argumente an. Der Funktionsprototyp für diesen Rückruf ist: voidend (void); |
| GLU_TESS_END_DATA | Der GLU_TESS_END_DATA-Rückruf ist mit dem Rückruf GLU_TESS_END identisch, mit der Ausnahme, dass ein zusätzliches Zeigerargument verwendet wird. Dieser Zeiger ist identisch mit dem nicht transparenten Zeiger, der beim Aufrufen von gluTessBeginPolygon bereitgestellt wird. Der Funktionsprototyp für diesen Rückruf ist: voidendData (void * polygon_data); |
| GLU_TESS_COMBINE | Rufen Sie GLU_TESS_COMBINE Rückruf auf, um einen neuen Scheitelpunkt zu erstellen, wenn das Mosaik eine Schnittmenge erkennt, oder um Features zusammen zu führen. Die Funktion verwendet vier Argumente: ein Array von drei Elementen vom Typ Gldouble. Ein Array von vier Zeigern. Ein Array von vier Elementen vom Typ GLfloat. Ein Zeiger auf einen Zeiger. Der Funktionsprototyp für diesen Rückruf ist: voidcombine(GLdoublecoords[3], void * vertex_data[4], GLfloatweight[4], void ** outData); Der Scheitelpunkt ist als lineare Kombination von bis zu vier vorhandenen Scheitelpunkte definiert, die in einem vertex_data. Die Koeffizienten der linearen Kombination werden nach Gewichtung angegeben. diese Gewichtungen summiert sich immer auf 1,0. Alle Scheitelpunktzeker sind gültig, auch wenn einige der Gewichtungen 0 (null) sind. Der Coords-Parameter gibt die Position des neuen Scheitelpunkts an. Ordnen Sie einen anderen Scheitelpunkt zu, interpolieren Sie Parameter mit vertex_data Gewichtung, und geben Sie den neuen Scheitelpunktzeiger in outData zurück. Dieses Handle wird bei Renderingrückrufen bereitgestellt. Geben Sie den Arbeitsspeicher irgendwann nach dem Aufruf von gluTessEndPolygon frei. Wenn das Polygon beispielsweise in einer beliebigen Ebene im dreidimensionalen Raum liegt und Sie jedem Scheitelpunkt eine Farbe zuordnen, könnte der GLU_TESS_COMBINE-Rückruf wie folgt aussehen: Wenn das Mosaik eine Schnittmenge erkennt, muss der GLU_TESS_COMBINE- oder GLU_TESS_COMBINE_DATA-Rückruf (siehe unten) definiert werden und einenNicht-NULL-Zeiger in dataOut schreiben. Andernfalls tritt GLU_TESS_NEED_COMBINE_CALLBACK Fehler auf, und es wird keine Ausgabe generiert. (Dies ist der einzige Fehler, der während des Mosaiks und Renderings auftreten kann.) |
| GLU_TESS_COMBINE_DATA | Der GLU_TESS_COMBINE_DATA-Rückruf ist identisch mit dem GLU_TESS_COMBINE Rückruf, mit dem Ausnahme, dass ein zusätzliches Zeigerargument verwendet wird. Dieser Zeiger ist identisch mit dem nicht transparenten Zeiger, der beim Aufrufen von gluTessBeginPolygon bereitgestellt wird. Der Funktionsprototyp für diesen Rückruf ist: voidcombineData (GLdoublecoords[3], void * vertex_data[4], GLfloatweight[4], void ** outData, void * polygon_data); |
| GLU_TESS_ERROR | Der GLU_TESS_ERROR rückruf wird aufgerufen, wenn ein Fehler auftritt. Das eine Argument ist vom Typ GLenum. gibt den spezifischen Aufgetretenen Fehler an und ist auf einen der folgenden Festgelegt: 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 Rufen Sie gluErrorString auf, um Zeichenfolgen abzurufen, die diese Fehler beschreiben. Der Funktionsprototyp für diesen Rückruf lautet wie folgt: voiderror (GLenumerrno); Die GLU-Bibliothek stellt die ersten vier Fehler wieder her, indem der fehlende Aufruf oder die fehlenden Aufrufe eingefügt werden. GLU_TESS_COORD_TOO_LARGE gibt an, dass einige Scheitelpunktkoordinate die vordefinierte Konstante GLU_TESS_MAX_COORD im absoluten Wert überschritten hat und dass der Wert geklammert wurde. (Koordinatenwerte müssen klein genug sein, damit zwei ohne Überlauf multipliziert werden können.) GLU_TESS_NEED_COMBINE_CALLBACK gibt an, dass das Mosaik eine Schnittmenge zwischen zwei Kanten in den Eingabedaten erkannt hat und der GLU_TESS_COMBINE oder GLU_TESS_COMBINE_DATA Rückruf nicht bereitgestellt wurde. Es wird keine Ausgabe generiert. |
| GLU_TESS_ERROR_DATA | Der GLU_TESS_ERROR_DATA-Rückruf entspricht dem GLU_TESS_ERROR Rückruf, außer dass ein zusätzliches Zeigerargument verwendet wird. Dieser Zeiger ist identisch mit dem nicht transparenten Zeiger, der beim Aufrufen von gluTessBeginPolygonbereitgestellt wird. Der Funktionsprototyp für diesen Rückruf lautet: voiderrorData (GLenumerrno, void * polygon_data); |
Requirements (Anforderungen)
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
Windows 2000 Professional [nur Desktop-Apps] |
| Unterstützte Mindestversion (Server) |
Windows 2000 Server [nur Desktop-Apps] |
| Header |
|
| Bibliothek |
|
| DLL |
|