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 derzeit zum Lesen ausgewählten Puffer ab (siehe glReadBuffer). Jeder Komponentenwert wird durch 2n 1 geteilt, wobei n die Anzahl der Bits ist, die jeder Farbkomponente im aktuell 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 2n1 dividiert, mit dem Wert multipliziert und dann in der entsprechenden Akkumulationspufferzelle gespeichert, wodurch der aktuelle Wert überschrieben wird.
GL_ADD
Fügt jedem R, G, B und A im Akkumulationspuffer einen Wert hinzu.
GL_MULT
Multipliziert jedes R, G, B und A im Akkumulationspuffer mit dem Wert und gibt die skalierte Komponente an den entsprechenden Akkumulationspufferspeicherort zurück.
GL_RETURN
Überträgt Akkumulationspufferwerte an den Farbpuffer oder die Puffer, die derzeit für das Schreiben ausgewählt sind. Jede R-, G-, B- und A-Komponente wird mit dem Wert multipliziert, dann mit 2n 1 multipliziert, auf den Bereich [0, 2n 1 ] geklemmt und in der entsprechenden Anzeigepufferzelle gespeichert. Die einzigen Fragmentvorgänge, die auf diese Übertragung angewendet werden, sind Pixelbesitz, Schere, Dithering und Farbschreibmasken.

value

Ein Gleitkommawert, der im Akkumulationspuffervorgang verwendet wird. Der op-Parameter bestimmt, wie der Wert 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 glEnd aufgerufen.

Bemerkungen

Der Akkumulationspuffer ist ein Farbpuffer mit erweitertem Bereich. Bilder werden nicht in sie 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 Schärfentiefe erstellen, indem Sie mit verschiedenen Transformationsmatrizen generierte Bilder sammeln.

Jedes Pixel im Akkumulationspuffer besteht aus roten, grünen, blauen und Alphawerten. Die Anzahl der Bits pro Komponente im Akkumulationspuffer hängt von der Implementierung ab. Sie können diese Nummer untersuchen, indem Sie glGetIntegerv vierMal 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 ist der Von jeder Komponente gespeicherte Wertebereich jedoch [ 1,?1]. Die Akkumulationspufferpixel werden 1:1 mit Framebuffer-Pixeln 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 Scherenfelds beschränkt und werden identisch auf die roten, grünen, blauen und Alphakomponenten jedes Pixels angewendet. Der Inhalt einer Akkumulationspuffer-Pixelkomponente ist nicht definiert, wenn der GlAccum-Vorgang zu einem Wert außerhalb des Bereichs [ 1,1] führt.

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

Nur die Pixel im aktuellen Scherenfeld werden von einem 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 argument GL_ACCUM_BLUE_BITS

glGet mit argument GL_ACCUM_ALPHA_BITS

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

glBlendFunc

glClear

glClearAccum

glCopyPixels

glEnd

glGet

glLogicOp

glPixelStore

glPixelTransfer

glReadBuffer

glReadPixels

glScissor

glStencilOp