Another application of the accumulation buffer is full-scene anti-aliasing. The basic strategy is to jitter the image one-half a pixel in several directions, to blur the edges of an image but not the solid areas. Accumulating as little as four of these “jittered” scenes will produce remarkably smoother images. The Microsoft Visual C++ compiler includes many OpenGL examples that use jitter for anti-aliasing. See the file OPENGL\BOOK\JITTER.H from the Visual C++ CD-ROM for many different sets of jitter values.
Anti-aliasing with the accumulation buffer does carry a price in speed, however. If you want to do any real-time anti-aliased animation, you’ll have to look at graphics hardware that supports multisampling to do your anti-aliasing for you. The accumulation buffer is just too slow for interactive work.
If you are generating stills or stop-motion animations, the accumulation buffer will give you anti-aliasing and simulated depth-of-field that simply are not possible with multisampling.
Operates on the accumulation buffer to establish pixel values.
void glAccum(GLenum func, GLfloat value);
This function operates on the accumulation buffer. Except for GL_RETURN, color values are scaled by the value parameter and added or stored into the accumulation buffer. For GL_RETURN, the accumulation buffer’s color values are scaled by the value parameter and
stored in the current color buffer.
GLenum: The accumulation function to apply.
Valid functions are as follows:
Add scaled color-buffer values to the accumulation buffer.
Load scaled color-buffer values into the accumulation buffer, replacing whatever was there before.
Add a constant color to the accumulation buffer values.
Multiply color values in the accumulation buffer by a constant color (filtering effects).
Copy the accumulation buffer into the main
See the CH15\MOTION.C example on the source code CD-ROM.