Freigeben über


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
GL_INVALID_ENUM
type war kein akzeptierter Wert.
GL_INVALID_ENUM
Die Größe war negativ.
GL_INVALID_OPERATION
glFeedbackBuffer wurde aufgerufen, während der Rendermodus GL_FEEDBACK war, oder glRenderMode wurde mit argument GL_FEEDBACK aufgerufen, bevor glFeedbackBuffer mindestens einmal aufgerufen wurde.
GL_INVALID_OPERATION
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
Gl.h
Bibliothek
Opengl32.lib
DLL
Opengl32.dll

Weitere Informationen

glBegin

glEnd

glGet

glLineStipple

glPassThrough

glPolygonMode

glRenderMode

glSelectBuffer