gl.Accum(op, value)
Jedes Pixel im Akkumulationspuffer besteht aus Rot-, Grün-, Blau- und
Alpha-Werten. Die Anzahl der Bits pro Komponente im Akkumulationspuffer
hängt von der Implementierung ab. Sie können diese Zahl untersuchen, indem
Sie gl.Get() viermal jeweils mit den Argumenten #GL_ACCUM_RED_BITS
,
#GL_ACCUM_GREEN_BITS
, #GL_ACCUM_BLUE_BITS
und #GL_ACCUM_ALPHA_BITS
aufrufen.
Unabhängig von der Anzahl der Bits pro Komponente beträgt der Wertebereich
für jede Komponente -1 bis 1. Die Akkumulationspufferpixel werden eins zu
eins mit Bildpufferpixeln abgebildet.
gl.Accum()
arbeitet mit dem Akkumulationspuffer. Das erste Argument, op
,
ist eine symbolische Konstante, die eine Akkumulationspufferoperation
auswählt. Das zweite Argument value
ist ein Gleitkommawert, der in
dieser Operation verwendet wird. Fünf Operationen sind angegeben:
#GL_ACCUM
, #GL_LOAD
, #GL_ADD
, #GL_MULT
, und #GL_RETURN
.
Alle Akkumulationspufferoperationen sind auf den Rahmen des aktuellen Bereichs beschränkt und werden identisch auf die Rot-, Grün-, Blau- und Alpha-Komponenten jedes Pixels angewendet. Wenn eine gl.Accum()-Operation zu einem Wert außerhalb des Bereichs von -1 bis 1 führt, sind die Inhalte einer Akkumulationspufferpixel-Komponente nicht definiert.
Die Operationen sind wie folgt:
#GL_ACCUM
#GL_LOAD
#GL_ACCUM
, außer dass der aktuelle Wert im Akkumulationspuffer
bei der Berechnung des neuen Wertes nicht verwendet wird. Das heißt, die
R-, G-, B- und A-Werte aus dem gegenwärtig ausgewählten Puffer werden durch
2^n - 1 geteilt, mit dem Wert multipliziert und dann in der entsprechenden
Akkumulationspufferzelle gespeichert, wobei der aktuelle Wert überschrieben
wird.
#GL_ADD
#GL_MULT
#GL_RETURN
Um den Akkumulationspuffer zu löschen, rufen Sie gl.ClearAccum() mit R-, G-, B- und A-Werten auf, um den Puffer zu setzen. Dann rufen Sie gl.Clear() mit aktiviertem Akkumulationspuffer auf.
Nur Pixel innerhalb der aktuellen Scherenbox werden durch eine gl.Accum()-Operation aktualisiert. Siehe glScissor für weitere Informationen über die Scherenbox.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_ACCUM
, #GL_LOAD
, #GL_ADD
, #GL_MULT
und #GL_RETURN
werden akzeptiertop
legt fest, wie value
verwendet wird#GL_INVALID_ENUM
wird generiert, wenn op kein akzeptierter Wert ist.
#GL_INVALID_OPERATION
wird generiert, wenn kein Akkumulationspuffer vorhanden ist.
#GL_INVALID_OPERATION
wird generiert, wenn gl.Accum()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
#GL_ACCUM_RED_BITS
gl.Get() mit dem Argument #GL_ACCUM_GREEN_BITS
gl.Get() mit dem Argument #GL_ACCUM_BLUE_BITS
gl.Get() mit dem Argument #GL_ACCUM_ALPHA_BITS