|This module corresponds to section 4.2 (Whole Framebuffer Operations) of the OpenGL 1.5 specs.|
|Querying the Buffer Configuration|
|auxBuffers :: GettableStateVar GLsizei|
|The implementation and context dependent number of auxiliary buffers.|
|doubleBuffer :: GettableStateVar Bool|
|True if front and back buffers exist.|
|stereoBuffer :: GettableStateVar Bool|
|True if left and right buffers exist.|
|rgbaBits :: GettableStateVar (Color4 GLsizei)|
|stencilBits :: GettableStateVar GLsizei|
|depthBits :: GettableStateVar GLsizei|
|accumBits :: GettableStateVar (Color4 GLsizei)|
|Selecting a Buffer for Writing|
|drawBuffer :: StateVar BufferMode|
When colors are written to the framebuffer, they are written into the color buffers specified by drawBuffer.
If more than one color buffer is selected for drawing, then blending or logical operations are computed and applied independently for each color buffer and can produce different results in each buffer.
Monoscopic contexts include only left buffers, and stereoscopic contexts include both left and right buffers. Likewise, single-buffered contexts include only front buffers, and double-buffered contexts include both front and back buffers. The context is selected at GL initialization.
|Fine Control of Buffer Updates|
|indexMask :: StateVar GLuint|
Controls the writing of individual bits in the color index buffers. The least significant n bits of its value, where n is the number of bits in a color index buffer, specify a mask. Where a 1 appears in the mask, it is possible to write to the corresponding bit in the color index buffer (or buffers). Where a 0 appears, the corresponding bit is write-protected.
This mask is used only in color index mode, and it affects only the buffers currently selected for writing (see drawBuffer). Initially, all bits are enabled for writing.
|colorMask :: StateVar (Color4 Capability)|
Controls whether the individual color components in the framebuffer can or cannot be written. If the red flag is Disabled, for example, no change is made to the red component of any pixel in any of the color buffers, regardless of the drawing operation attempted. Initially, all color components can be written.
Changes to individual bits of components cannot be controlled. Rather, changes are either enabled or disabled for entire color components. Furthermore, this mask is used only in RGBA mode.
|stencilMask :: StateVar GLuint|
|Controls the writing of individual bits in the stencil planes. The least significant n bits of its value, where n is the number of bits in the stencil buffer, specify a mask. Where a 1 appears in the mask, it is possible to write to the corresponding bit in the stencil buffer. Where a 0 appears, the corresponding bit is write-protected. Initially, all bits are enabled for writing.|
|depthMask :: StateVar Capability|
|Controls whether the depth buffer is enabled for writing. The initial state is Enabled.|
|Clearing the Buffers|
|clear :: [ClearBuffer] -> IO ()|
Set the bitplane area of the window to values previously selected by clearColor, clearIndex, clearDepth, clearStencil, and clearAccum. Multiple color buffers can be cleared simultaneously by selecting more than one buffer at a time using drawBuffer.
The pixel ownership test, the scissor test, dithering, and the buffer writemasks affect the operation of clear. The scissor box bounds the cleared region. Alpha function, blend function, logical operation, stenciling, texure mapping, and depth-buffering are ignored by clear.
The value to which each buffer is cleared depends on the setting of the clear value for that buffer.
|clearColor :: StateVar (Color4 GLclampf)|
|Controls the red, green, blue, and alpha values used by clear to clear the color buffers. Values written into clearColor are clamped to the range [0, 1]. Initially, all values are 0.|
|clearIndex :: StateVar (Index1 GLfloat)|
|Controls the index c used by clear to clear the color index buffers. c is not clamped. Rather, c is converted to a fixed-point value with unspecified precision to the right of the binary point. The integer part of this value is then masked with 2^m-1, where m is the number of bits in a color index stored in the framebuffer. Initially, the value is 0.|
|clearStencil :: StateVar GLint|
|Controls the value s used by clear to clear the stencil buffer. s is masked with 2^m-1, where m is the number of bits in the stencil buffer. Initially, the value is 0.|
|clearDepth :: StateVar GLclampd|
|Controls the depth value used by clear to clear the depth buffer. Values written into clearDepth are clamped to the range [0, 1]. The initial value is 1.|
|clearAccum :: StateVar (Color4 GLfloat)|
|Controls the red, green, blue, and alpha values used by clear to clear the accumulation buffer. Values written into clearAccum are clamped to the range [-1, 1]. The initial values are all 0.|
|The Accumulation Buffer|
|accum :: AccumOp -> GLfloat -> IO ()|
The accumulation buffer is an extended-range color buffer. Images are not rendered into it. Rather, images rendered into one of the color buffers are added to the contents of the accumulation buffer after rendering. Effects such as antialiasing (of points, lines, and polygons), motion blur, and depth of field can be created by accumulating images generated with different transformation matrices.
Each pixel in the accumulation buffer consists of red, green, blue, and alpha values. The number of bits per component in the accumulation buffer depends on the implementation (see accumBits). Regardless of the number of bits per component, the range of values stored by each component is [-1, 1]. The accumulation buffer pixels are mapped one-to-one with frame buffer pixels.
All accumulation buffer operations are limited to the area of the current scissor box and applied identically to the red, green, blue, and alpha components of each pixel. If an accum operation results in a value outside the range [-1, 1], the contents of an accumulation buffer pixel component are undefined.
|Produced by Haddock version 0.8|