glAccum: Unterschied zwischen den Versionen
K (An Funktionsvorlage angepasst) |
K (Trennlinien entfernt) |
||
Zeile 3: | Zeile 3: | ||
<br> | <br> | ||
== Name == | == Name == | ||
− | |||
'''glAccum''' spezifiziert die Betriebsart des Accumulation-Buffers. | '''glAccum''' spezifiziert die Betriebsart des Accumulation-Buffers. | ||
<br> | <br> | ||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | |||
procedure '''glAccum'''(''op'' : GLenum; ''value'' : GLfloat); | procedure '''glAccum'''(''op'' : GLenum; ''value'' : GLfloat); | ||
<br> | <br> | ||
== Parameter == | == Parameter == | ||
− | |||
<table border=1 rules=all> | <table border=1 rules=all> | ||
<tr> | <tr> | ||
Zeile 37: | Zeile 34: | ||
<br> | <br> | ||
== Beschreibung == | == Beschreibung == | ||
− | |||
Der Accumulation-Buffer ist ein erweiterter Color-Buffer. Allerdings wird nicht direkt in den Accumulation-Buffer gerendert. Stattdessen wird nach dem Rendern in einen Color-Buffer der Inhalt des Accumulation-Buffers geändert, wobei die Betriebsart des Accumulation-Buffers darüber entscheidet, wie dies genau geschieht. | Der Accumulation-Buffer ist ein erweiterter Color-Buffer. Allerdings wird nicht direkt in den Accumulation-Buffer gerendert. Stattdessen wird nach dem Rendern in einen Color-Buffer der Inhalt des Accumulation-Buffers geändert, wobei die Betriebsart des Accumulation-Buffers darüber entscheidet, wie dies genau geschieht. | ||
Mit Hilfe des Accumulation-Buffers lassen sich z.B. Effekte wie Antialiasing, Bewegungs- und Tiefenunschärfe erzeugen, indem man Szenen mehrmals mit unterschiedlichen Transformationsmatritzen rendert und im Accumulation-Buffer kombiniert. | Mit Hilfe des Accumulation-Buffers lassen sich z.B. Effekte wie Antialiasing, Bewegungs- und Tiefenunschärfe erzeugen, indem man Szenen mehrmals mit unterschiedlichen Transformationsmatritzen rendert und im Accumulation-Buffer kombiniert. | ||
Zeile 74: | Zeile 70: | ||
<br> | <br> | ||
== Fehlermeldungen == | == Fehlermeldungen == | ||
− | |||
'''GL_INVALID_ENUM''' wird ausgelöst wenn ''op'' einen ungültigen Wert besitzt.<br> | '''GL_INVALID_ENUM''' wird ausgelöst wenn ''op'' einen ungültigen Wert besitzt.<br> | ||
'''GL_INVALID_OPERATION''' wird ausgelöst, wenn es keinen Accumulation-Buffer gibt oder der Befehl innerhalb eines glBegin/glEnd Blocks aufgerufen wird. | '''GL_INVALID_OPERATION''' wird ausgelöst, wenn es keinen Accumulation-Buffer gibt oder der Befehl innerhalb eines glBegin/glEnd Blocks aufgerufen wird. | ||
Zeile 80: | Zeile 75: | ||
<br> | <br> | ||
== Siehe auch == | == Siehe auch == | ||
− | |||
[[glBegin]], [[glBlendFunc]], [[glClear]], [[glClearAccum]], [[glCopyPixels]], [[glEnd]], [[glGet]], [[glLogicOp]], [[glPixelStore]], [[glPixelTransfer]], [[glReadBuffer]], [[glReadPixels]], [[glScissor]], [[glStencilOp]] | [[glBegin]], [[glBlendFunc]], [[glClear]], [[glClearAccum]], [[glCopyPixels]], [[glEnd]], [[glGet]], [[glLogicOp]], [[glPixelStore]], [[glPixelTransfer]], [[glReadBuffer]], [[glReadPixels]], [[glScissor]], [[glStencilOp]] | ||
---- | ---- | ||
*) Dieses Intervall bezieht sich auf 32bit Fartiefe, die heutzutage wohl als Standard angesehen werden darf. Bei 16bit Farbtiefe sieht der Bereich natürlich anders aus. | *) Dieses Intervall bezieht sich auf 32bit Fartiefe, die heutzutage wohl als Standard angesehen werden darf. Bei 16bit Farbtiefe sieht der Bereich natürlich anders aus. |
Version vom 15. August 2004, 23:58 Uhr
Inhaltsverzeichnis
glAccum
Name
glAccum spezifiziert die Betriebsart des Accumulation-Buffers.
Delphi-Spezifikation
procedure glAccum(op : GLenum; value : GLfloat);
Parameter
op |
Bestimmt die Betriebsart des Accumulation-Buffers. Es werden die folgenden fünf symbolischen Konstanten aktzeptiert: GL_ACCUM, GL_LOAD, GL_ADD, GL_MULT, GL_RETURN |
value |
Eine Fließkommazahl, die je nach Betriebsart (op) des Accumulation-Buffers unterschiedlich verwendet wird. |
Beschreibung
Der Accumulation-Buffer ist ein erweiterter Color-Buffer. Allerdings wird nicht direkt in den Accumulation-Buffer gerendert. Stattdessen wird nach dem Rendern in einen Color-Buffer der Inhalt des Accumulation-Buffers geändert, wobei die Betriebsart des Accumulation-Buffers darüber entscheidet, wie dies genau geschieht. Mit Hilfe des Accumulation-Buffers lassen sich z.B. Effekte wie Antialiasing, Bewegungs- und Tiefenunschärfe erzeugen, indem man Szenen mehrmals mit unterschiedlichen Transformationsmatritzen rendert und im Accumulation-Buffer kombiniert.
Jeder Pixel im Accumulation-Buffer enthält Rot-, Grün-, Blau- und Alphawerte im im Bereich von 1 bis 1. Dabei bilden die Pixel im Accumulation-Buffer eins zu eins auf die Pixel im Framebuffer ab.
Folgende Funktionsmodi gibt es für den Accumulation-Buffer:
GL_ACCUM
Nimmt Farbwerte (RGBA) aus dem gegenwärtig per glReadBuffer selektierten Color-Buffer und bildet die Farbwerte aus dem Intervall [0, 255]* in auf Fließkommzahlen im Intervall [0,1] ab. (Und zwar linear, wobei die 0 so bleibt und 255 zu 1 wird.) Jeder Farbwert wird nun mit dem beim Aufruf von glAccum als value übergebenen Wert multipliziert und zur entsprechenden Pixelkomponente im Accumulation-Buffer hinzugefügt.
GL_LOAD
Die Berechnung läuft wie bei GL_ACCUM, nur das am Ende die Farbwerte nicht zu den bereits im Accumulation-Buffer stehenden, hinzuaddiert werden sondern diese überschreiben.
GL_ADD
Zu jeder im Accumulation-Buffer stehenden Farbkomponente wird value hinzuaddiert.
GL_MULT
Jede im Accumulation-Buffer stehenden Farbkomponente wird mit value multipliziert.
GL_RETURN
Funktioniert wie GL_ACCUM nur andersrum: Die Farbwerte des Accumulation-Buffers werden mit value multipliziert, auf das Intervall [0, 255]* abgebildet (und dabei u.U. geclampt) und in den gerade aktiven Color-Buffer geschrieben.
Um den Accumulation-Buffer zu löschen, kann der Befehl glClear benutzt werden. Mit glClearAccum lassen sich die beim Löschen geschriebenen Farbwerte festlegen.
Nur die Pixel innerhalb der Scissor-Box werden beachtet. Diese lässt sich mit glScissor setzen.
Achtung: Wenn das Ergebniss der vom Accumulation-Buffer berechneten Farbwerte außerhalb des Bereichs zwische -1 und +1 liegen, ist nicht definiert, was in den Accumulation-Buffer geschrieben wird. Hier wird also nicht notwendigerweise geclampt!
Fehlermeldungen
GL_INVALID_ENUM wird ausgelöst wenn op einen ungültigen Wert besitzt.
GL_INVALID_OPERATION wird ausgelöst, wenn es keinen Accumulation-Buffer gibt oder der Befehl innerhalb eines glBegin/glEnd Blocks aufgerufen wird.
Siehe auch
glBegin, glBlendFunc, glClear, glClearAccum, glCopyPixels, glEnd, glGet, glLogicOp, glPixelStore, glPixelTransfer, glReadBuffer, glReadPixels, glScissor, glStencilOp
- ) Dieses Intervall bezieht sich auf 32bit Fartiefe, die heutzutage wohl als Standard angesehen werden darf. Bei 16bit Farbtiefe sieht der Bereich natürlich anders aus.