Bezeichnung
gl.FeedbackBuffer -- steuert den Feedback-Modus
Übersicht
buffer = gl.FeedbackBuffer(size, type)
Beschreibung
Der Befehl gl.FeedbackBuffer() steuert die Rückmeldung. Feedback ist wie die Auswahl ein GL-Modus. Der Modus wird durch Aufruf von gl.RenderMode() mit #GL_FEEDBACK ausgewählt. Wenn sich GL im Feedback-Modus befindet, werden durch die Rasterung keine Pixel erzeugt. Stattdessen werden Informationen über Grundelemente, die gerastert worden wären, mit Hilfe des GL an die Anwendung zurückgegeben.

gl.FeedbackBuffer() hat zwei Argumente: size gibt die Größe des Feldes an, das in Elementen von #GL_FLOAT zurückgegeben werden soll. type ist eine symbolische Konstante, die die Informationen beschreibt, die für jeden Knoten zurückgegeben werden. gl.FeedbackBuffer() muss ausgegeben werden, bevor der Feedback-Modus aktiviert wird (durch Aufruf von gl.RenderMode() mit dem Argument #GL_FEEDBACK). Das Setzen von #GL_FEEDBACK ohne Einrichtung des Feedback-Puffers oder der Aufruf von gl.FeedbackBuffer(), während sich GL im Feedback-Modus befindet, ist ein Fehler.

Wenn gl.RenderMode() im Feedback-Modus aufgerufen wird, gibt er die Anzahl der Einträge im Feedback-Feld zurück und setzt den Feedback-Feldzeiger auf die Basis des Feedback-Puffers zurück. Der zurückgegebene Wert überschreitet nie die Größe. Wenn die Feedback-Daten mehr Platz benötigten, als im Puffer verfügbar war, gibt gl.RenderMode() einen negativen Wert zurück. Um GL aus dem Feedback-Modus zu nehmen, rufen Sie gl.RenderMode() mit einem Parameter-Wert anders als #GL_FEEDBACK auf.

Im Feedback-Modus erzeugt jedes Grundelement, Bitmap oder Pixelrechteck, das gerastert werden soll, einen Block von Werten, die in das Feedback-Feld kopiert werden. Wenn dies dazu führen würde, dass die Anzahl der Einträge das Maximum übersteigt, wird der Block teilweise so geschrieben, um das Feld zu füllen (wenn überhaupt noch Platz vorhanden ist) und ein Überlauf-Flag gesetzt. Jeder Block beginnt mit einem Code, der den Grundelement-Typ angibt, gefolgt von Werten, die die Knoten des Grundelements und die zugehörigen Daten beschreiben. Einträge werden auch für Bitmaps und Pixelrechtecke geschrieben. Die Rückmeldung erfolgt nach dem Polygonauslesen und gl.PolygonMode(). Die Interpretation von Polygonen hat stattgefunden, so dass Polygone, die gerendert werden, nicht im Feedback-Puffer zurückgegeben werden. Sie kann auch auftreten, wenn Polygone mit mehr als drei Kanten in Dreiecke zerlegt werden, wenn die GL-Implementierung Polygone rendert, indem man diese Zerlegung durchführt.

Der Befehl gl.PassThrough() kann verwendet werden, um eine Markierung in den Feedback-Puffer einzufügen. Siehe gl.PassThrough für Details.

Es folgt die Grammatik für die Blöcke von Werten, die in den Feedback-Puffer geschrieben werden. Jedes Grundelement wird mit einem eindeutigen Identifizierungswert angezeigt, gefolgt von einer bestimmten Anzahl von Knoten. Polygon-Einträge enthalten einen ganzzahligen Wert, der angibt, wie viele Knoten folgen. Ein Knoten wird je nach Typ als eine bestimmte Anzahl von Gleitkommawerten zurückgegeben. Farben werden als vier Werte im RGBA-Modus und ein Wert im Farbindex-Modus zurückgegeben.

Die Koordinaten der Feedback-Eckpunkte sind als Fensterkoordinaten angegeben, außer w, das als Clip-Koordinaten zurückgegeben wird. Die Feedback-Farben leuchten, wenn die Beleuchtung aktiviert ist. Feedback-Texturkoordinaten werden erzeugt, wenn die Generierung von Texturkoordinaten aktiviert ist. Sie werden immer von der Texturmatrix transformiert.

gl.FeedbackBuffer() wird bei Verwendung in einer Display-Liste nicht in die Display-Liste kompiliert, sondern sofort ausgeführt.

Bitte beachten Sie, dass gl.FeedbackBuffer() nur die Texturkoordinate der Textureinheit #GL_TEXTURE0 zurückgibt.

Um einen von diesem Befehl zugewiesenen Puffer freizugeben, rufen Sie den Befehl gl.FreeFeedbackBuffer() auf. Siehe gl.FreeFeedbackBuffer für Details.

Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.

Eingaben
size
gibt die maximale Anzahl der Werte an, die zurückgegeben werden sollen
type
gibt eine symbolische Konstante an, die die Informationen beschreibt, die für jeden Knoten zurückgegeben werden; #GL_2D, #GL_3D, #GL_3D_COLOR, #GL_3D_COLOR_TEXTURE und #GL_4D_COLOR_TEXTURE werden akzeptiert
Rückgabewerte
buffer
Zeiger auf den Feedback-Puffer
Fehler
#GL_INVALID_ENUM wird erzeugt, wenn type kein akzeptierter Wert ist.

#GL_INVALID_VALUE wird erzeugt, wenn size negativ ist.

#GL_INVALID_OPERATION wird erzeugt, wenn gl.FeedbackBuffer() aufgerufen wird, während der Rendermodus #GL_FEEDBACK ist oder wenn gl.RenderMode() mit dem Argument #GL_FEEDBACK aufgerufen wird, bevor gl.FeedbackBuffer() mindestens einmal aufgerufen wurde.

#GL_INVALID_OPERATION wird erzeugt, wenn gl.FeedbackBuffer() zwischen gl.Begin() und gl.End() ausgeführt wird.

Verbundene get-operationen
gl.Get() mit dem Argument #GL_RENDER_MODE

gl.Get() mit dem Argument #GL_FEEDBACK_BUFFER_POINTER

gl.Get() mit dem Argument #GL_FEEDBACK_BUFFER_SIZE

gl.Get() mit dem Argument #GL_FEEDBACK_BUFFER_TYPE


Navigation zeigen