glAccum-Funktion

Die glAccum-Funktion arbeitet mit dem Akkumulationspuffer.

Syntax

void WINAPI glAccum(
   GLenum  op,
   GLfloat value
);

Parameter

op

Der Akkumulationspuffervorgang. Die akzeptierten symbolischen Konstanten sind wie folgt.

Wert Bedeutung
GL _ ACCUM
Ruft R-, G-, B- und A-Werte aus dem Puffer ab, der derzeit zum Lesen ausgewählt ist (siehe glReadBuffer). Jeder Komponentenwert wird durch 2 n 1 dividiert, wobei n die Anzahl der Bits ist, die jeder Farbkomponente im derzeit ausgewählten Puffer zugeordnet sind. Das Ergebnis ist ein Gleitkommawert im Bereich [ 0,1, der ] mit dem Wert multipliziert und der entsprechenden Pixelkomponente im Akkumulationspuffer hinzugefügt wird, wodurch der Akkumulationspuffer aktualisiert wird.
GL _ LOAD
Ähnlich wie GL _ ACCUM, mit der Ausnahme, dass der aktuelle Wert im Akkumulationspuffer nicht bei der Berechnung des neuen Werts verwendet wird. Das heißt, die R-, G-, B- und A-Werte aus dem derzeit ausgewählten Puffer werden durch 2 n 1 dividiert, multipliziert mit dem Wert und dann in der entsprechenden Akkumulationspufferzelle gespeichert, wobei der aktuelle Wert überschrieben wird.
GL _ ADD
Fügt jedem R, G, B und A im Akkumulationspuffer einen Wert hinzu.
GL _ MULT
Multipliziert alle R-, G-, B- und A-Werte im Akkumulationspuffer mit dem Wert und gibt die skalierte Komponente an die entsprechende Akkumulationspufferposition zurück.
GL _ RETURN
Überträgt Akkumulationspufferwerte an den Farbpuffer oder die Puffer, die derzeit zum Schreiben ausgewählt sind. Jede R-, G-, B- und A-Komponente wird mit dem Wert multipliziert, dann mit 2 n 1 multipliziert, an den Bereich [ 0, 2 n 1 gebunden ] und in der entsprechenden Anzeigepufferzelle gespeichert. Die einzigen Fragmentvorgänge, die auf diese Übertragung angewendet werden, sind Pixelbesitz, Scissor, Dithering und Farbschreibmasken.

value

Ein Im Akkumulationspuffervorgang verwendeter Gleitkommawert. Der op-Parameter bestimmt, wie value verwendet wird.

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
op war kein akzeptierter Wert.
GL _ INVALID _ OPERATION
Es gab keinen Akkumulationspuffer, oder die Funktion glAccum wurde zwischen einem Aufruf von glBegin und dem entsprechenden Aufruf von glEndaufgerufen.

Hinweise

Der Akkumulationspuffer ist ein Farbpuffer mit erweitertem Bereich. Bilder werden darin nicht gerendert. Stattdessen werden Bilder, die in einen der Farbpuffer gerendert werden, dem Inhalt des Akkumulationspuffers nach dem Rendern hinzugefügt. Sie können Effekte wie Antialiasing (von Punkten, Linien und Polygonen), Bewegungsunschärfe und Feldtiefe erstellen, indem Sie Bilder sammeln, die mit verschiedenen Transformationsmatrizen generiert wurden.

Jedes Pixel im Akkumulationspuffer besteht aus Rot-, Grün-, Blau- und Alphawerten. Die Anzahl der Bits pro Komponente im Akkumulationspuffer hängt von der Implementierung ab. Sie können diese Zahl untersuchen, indem Sie glGetIntegerv viermal aufrufen, mit den Argumenten GL _ ACCUM _ RED _ BITS, GL _ ACCUM _ GREEN _ BITS, GL _ ACCUM BLUE _ _ BITS bzw. GL _ ACCUM ALPHA _ _ BITS. Unabhängig von der Anzahl der Bits pro Komponente beträgt der von jeder Komponente gespeicherte Wertebereich jedoch [ 1,?1 ] . Die Akkumulationspufferpixel werden 1:1 mit Framepufferpixeln zugeordnet.

Die glAccum-Funktion arbeitet mit dem Akkumulationspuffer. Das erste Argument op ist eine symbolische Konstante, die einen Akkumulationspuffervorgang auswählt. Das zweite Argument, value, ist ein Gleitkommawert, der in diesem Vorgang verwendet werden soll. Es werden fünf Vorgänge angegeben: GL _ ACCUM, GL _ LOAD, GL _ ADD, GL _ MULT und GL _ RETURN.

Alle Akkumulationspuffervorgänge sind auf den Bereich des aktuellen Scissor-Felds beschränkt und werden identisch auf die Rot-, Grün-, Blau- und Alphakomponenten jedes Pixels angewendet. Der Inhalt einer Akkumulationspufferpixelkomponente ist nicht definiert, wenn der GlAccum-Vorgang einen Wert außerhalb des Bereichs [ von 1,1 ] ergibt.

Verwenden Sie zum Löschen des Akkumulationspuffers die glClearAccum-Funktion, um R-, G-, B- und A-Werte anzugeben, auf die sie festgelegt werden soll, und geben Sie eine glClear-Funktion mit aktivierter Akkumulationspuffer aus.

Nur die Pixel innerhalb des aktuellen Scissor-Felds werden durch einen glAccum-Vorgang aktualisiert.

Die folgenden Funktionen rufen Informationen im Zusammenhang mit der glAccum-Funktion ab:

glGet mit argument GL _ ACCUM _ RED _ BITS

glGet mit argument GL _ ACCUM _ GREEN _ BITS

glGet mit dem Argument GL _ ACCUM _ BLUE _ BITS

glGet mit argument GL _ ACCUM _ ALPHA _ BITS

Requirements (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

Siehe auch

glBegin

glBlendFunc

glClear

glClearAccum

glCopyPixels

glEnd

glGet

glLogicOp

glPixelStore

glPixelTransfer

glReadBuffer

glReadPixels

glScissor

glStencilOp