glFeedbackBuffer-Funktion
Die Funktion glFeedbackBuffer steuert den Feedbackmodus.
Syntax
void WINAPI glFeedbackBuffer(
GLsizei size,
GLenum type,
GLfloat *buffer
);
Parameter
-
size
-
Die maximale Anzahl von Werten, die in den Puffer geschrieben werden können.
-
type
-
Eine symbolische Konstante, die die Informationen beschreibt, die für jeden Scheitelpunkt zurückgegeben werden. Die folgenden symbolischen Konstanten werden akzeptiert: GL_2D, GL_3D, GL_3D_COLOR, GL_3D_COLOR_TEXTURE und GL_4D_COLOR_TEXTURE.
-
Puffer
-
Gibt die Feedbackdaten zurück.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Fehlercodes
Die folgenden Fehlercodes können von der glGetError-Funktion abgerufen werden.
Name | Bedeutung |
---|---|
|
type war kein akzeptierter Wert. |
|
Die Größe war negativ. |
|
glFeedbackBuffer wurde aufgerufen, während der Rendermodus GL_FEEDBACK war, oder glRenderMode wurde mit argument GL_FEEDBACK aufgerufen, bevor glFeedbackBuffer mindestens einmal aufgerufen wurde. |
|
Die Funktion wurde zwischen einem Aufruf von glBegin und dem entsprechenden Aufruf von glEnd aufgerufen. |
Bemerkungen
Die Funktion glFeedbackBuffer steuert Feedback. Feedback ist wie die Auswahl ein OpenGL-Modus. Der Modus wird durch Aufrufen von glRenderMode mit GL_FEEDBACK ausgewählt. Wenn sich OpenGL im Feedbackmodus befindet, werden durch die Rasterung keine Pixel erzeugt. Stattdessen werden Informationen zu Primitiven, die gerastert worden wären, mithilfe von OpenGL an die Anwendung zurückgespeist.
Die glFeedbackBuffer-Funktion weist drei Argumente auf:
- puffer ist ein Zeiger auf ein Array von Gleitkommawerten, in dem Feedbackinformationen platziert werden.
- size gibt die Größe des Arrays an.
- type ist eine symbolische Konstante, die die Informationen beschreibt, die für jeden Scheitelpunkt zurückgespeist werden.
Sie müssen glFeedbackBuffer ausstellen, bevor der Feedbackmodus aktiviert wird (durch Aufrufen von glRenderMode mit argument GL_FEEDBACK). Das Festlegen GL_FEEDBACK ohne Einrichten des Feedbackpuffers oder das Aufrufen von glFeedbackBuffer , während Sich OpenGL im Feedbackmodus befindet, ist ein Fehler.
Nehmen Sie OpenGL aus dem Feedbackmodus, indem Sie glRenderMode mit einem anderen Parameterwert als GL_FEEDBACK aufrufen. Wenn Sie dies tun, während sich OpenGL im Feedbackmodus befindet, gibt glRenderMode die Anzahl der Im Feedbackarray platzierten Einträge zurück. Der zurückgegebene Wert überschreitet nie die Größe. Wenn die Feedbackdaten mehr Platz erforderten, als im Puffer verfügbar war, gibt glRenderMode einen negativen Wert zurück.
Im Feedbackmodus generiert jedes Primitive, das gerastert wird, einen Block von Werten, der in das Feedbackarray kopiert wird. Wenn dies dazu führt, dass die Anzahl der Einträge das Maximum überschreitet, schreibt glFeedbackBuffer den Block teilweise, um das Array auszufüllen (wenn überhaupt noch Einraum vorhanden ist), und legt ein Überlaufflag fest. Jeder Block beginnt mit einem Code, der den primitiven Typ angibt, gefolgt von Werten, die die Scheitelpunkte des Grundtyps und die zugeordneten Daten beschreiben. Die funktion glFeedbackBuffer schreibt auch Einträge für Bitmaps und Pixelrechtecke. Das Feedback erfolgt nach der Polygon-Culling- und glPolygonMode-Interpretation von Polygonen, sodass Polygone, die gekullt werden, nicht im Feedbackpuffer zurückgegeben werden. Es kann auch auftreten, nachdem Polygone mit mehr als drei Kanten in Dreiecke unterteilt werden, wenn die OpenGL-Implementierung Polygone durch diese Zerlegung rendert.
Sie können mit glPassThrough einen Marker in den Feedbackpuffer einfügen.
Im Folgenden ist die Grammatik für die Werteblöcke aufgeführt, die in den Feedbackpuffer geschrieben werden. Jeder Grundtyp wird mit einem eindeutigen Identifikationswert gefolgt von einer bestimmten Anzahl von Scheitelpunkten angegeben. Polygoneinträge enthalten einen ganzzahligen Wert, der angibt, wie viele Scheitelpunkte folgen. Ein Scheitelpunkt wird als eine bestimmte Anzahl von Gleitkommawerten zurückgespeist, die vom Typ bestimmt werden. Farben werden als vier Werte im RGBA-Modus und einen Wert im Farbindexmodus zurückgegeben.
feedbackList < feedbackItem feedbackList | feedbackItem
feedbackItem-Punkt < | lineSegment | Polygon | Bitmap | pixelRectangle | passThru
Punkt < GL_POINT_TOKEN Scheitelpunkt
lineSegment < GL_LINE_TOKEN Scheitelpunkt | GL_LINE_RESET_TOKEN Scheitelpunkt
polygon < GL_POLYGON_TOKEN n polySpec
polySpec < polySpec Vertex | Vertex-Scheitelpunkt
Bitmap < GL_BITMAP_TOKEN Scheitelpunkt
pixelRectangle < GL_DRAW_PIXEL_TOKEN Scheitelpunkt | GL_COPY_PIXEL_TOKEN Scheitelpunkt
passThru < GL_PASS_THROUGH_TOKEN Wert
vertex < 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture
2d-Wert <
3D-Wertwert <
3dColor-WertWertwert < Farbe
Wertwert 3dColorTexture < wert color tex
4dColorTexture < Wert Wert Wert Farbe tex
color < rgba | index
rgba-Wertwertwertwert <
Indexwert <
Wert des tex-Wertwerts <
Der Wertparameter ist eine Gleitkommazahl, und n ist eine Gleitkomma-Ganzzahl, die die Anzahl der Scheitelpunkte im Polygon angibt. Es folgen symbolische Gleitkommakonstanten: GL_POINT_TOKEN, GL_LINE_TOKEN, GL_LINE_RESET_TOKEN, GL_POLYGON_TOKEN, GL_BITMAP_TOKEN, GL_DRAW_PIXEL_TOKEN, GL_COPY_PIXEL_TOKEN und GL_PASS_THROUGH_TOKEN. GL_LINE_RESET_TOKEN wird zurückgegeben, wenn das Linienstipplemuster zurückgesetzt wird. Die als Scheitelpunkt zurückgegebenen Daten hängen vom Feedbacktyp ab.
Die folgende Tabelle enthält die Übereinstimmung zwischen dem Typ und der Anzahl der Werte pro Scheitelpunkt; k ist 1 im Farbindexmodus und 4 im RGBA-Modus.
type | Koordinaten | Color | Struktur | Gesamtzahl der Werte |
---|---|---|---|---|
GL_2D | x, y | 2 | ||
GL_3D | x, y, z | 3 | ||
GL_3D_COLOR | x, y, z | k | 3 + k | |
GL_3D_COLOR_TEXTURE | x, y, z, | k | 4 | 7 + k |
GL_4D_COLOR_TEXTURE | x, y, z, w | k | 4 | 8 + k |
Feedback-Vertexkoordinaten befinden sich in Fensterkoordinaten, mit Ausnahme von w, das sich in Clipkoordinaten befindet. Feedbackfarben werden leuchtet, wenn die Beleuchtung aktiviert ist. Feedbacktexturkoordinaten werden generiert, wenn die Texturkoordinatengenerierung aktiviert ist. Sie werden immer von der Texturmatrix transformiert.
Die glFeedbackBuffer-Funktion wird bei Verwendung in einer Anzeigeliste nicht in die Anzeigeliste kompiliert, sondern sofort ausgeführt.
Die folgende Funktion ruft Informationen im Zusammenhang mit glFeedbackBuffer ab:
glGet mit argument GL_RENDER_MODE
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 |
|