glSamplePatternEXT

NAME

glSamplePatternEXT - set pattern for multisampling

C SPECIFICATION

void glSamplePatternEXT(GLenum pattern)

PARAMETERS

pattern A symbolic constant that indicates the sampling pattern to be used when multisampling is enabled. The allowable values are GL_1PASS_EXT, GL_2PASS_0_EXT, GL_2PASS_1_EXT, GL_4PASS_0_EXT, GL_4PASS_1_EXT, GL_4PASS_2_EXT, and GL_4PASS_3_EXT.

DESCRIPTION

glSamplePatternEXT is part of the EXT_multisample extension. This extension provides multisampling, a mechanism for antialiasing all GL primitives: points, lines, polygons, bitmaps, and images. Multisample antialiasing is most valuable for rendering polygons, because it requires no sorting for hidden surface elimination, and it correctly handles adjacent polygons, object silhouettes, and even intersecting polygons. If only points or lines are being rendered, the "smooth" antialiasing mechanism provided by the base GL may result in a higher quality image. This extension is designed to allow multisample and smooth antialiasing techniques to be alternated during the rendering of a single scene.

The technique is to sample all primitives multiple times at each pixel. The color sample values are resolved to a single, displayable color each time a pixel is updated, so the antialiasing appears to be automatic at the application level. Because each sample includes depth and stencil information, the depth and stencil functions perform equivalently to the single-sample mode.

An additional buffer, called the multisample buffer, is required. Pixel sample values, including color, depth, and stencil values, are stored in this buffer. When the frame buffer includes a multisample buffer, it does not also include separate depth or stencil buffers, even if the multisample buffer does not store depth or stencil values. Color buffers (left/right, front/back, and aux) do coexist with the multisample buffer, however.

The locations of the sample points are relatively static. They change only when glSamplePatternEXT is called, and are a repeatable function of the parameter pattern. The default pattern GL_1PASS_EXT is designed to produce a well antialiased result in a single rendering pass. Patterns GL_2PASS_0_EXT and GL_2PASS_1_EXT together specify twice the number of sample points per pixel. It is intended that a scene be completely rendered using pattern GL_2PASS_0_EXT, then completely rendered again using GL_2PASS_1_EXT. When these two images are averaged using the accumulation buffer, the result is as if a single pass had been rendered with a pattern of twice the number of sample points. Patterns GL_4PASS_0_EXT, GL_4PASS_1_EXT, GL_4PASS_2_EXT, and GL_4PASS_3_EXT together define a pattern of four times the number of sample points. They can be used to accumulate an image after four complete rendering passes.

NOTES

It is not possible to query the actual sample locations of a pixel.

Some sample locations may lie outside the unit square that is considered to bound the pixel.

EXTENSIONS

Some routines and constants for this function are part of an extension, not part of the core GL command set. The following extension names must be present in the string returned by glGetString when called with argument GL_EXTENSIONS to use these routines and constants.
glSamplePatternEXT, GL_1PASS_EXT, GL_2PASS_0_EXT, GL_2PASS_1_EXT, GL_4PASS_0_EXT, GL_4PASS_1_EXT, GL_4PASS_2_EXT, and GL_4PASS_3_EXT are part of the EXT_multisample extension.

ERRORS

GL_INVALID_OPERATION is generated if glSamplePatternEXT is executed between the execution of glBegin and the corresponding execution of glEnd.

ASSOCIATED GETS

glGet with argument GL_SAMPLE_PATTERN_EXT

SEE ALSO

glSampleMaskEXT, glPushAttrib, glEnable