
- •Introduction
- •Formatting of Optional Features
- •What is the OpenGL Graphics System?
- •Our View
- •Companion Documents
- •OpenGL Operation
- •OpenGL Fundamentals
- •Floating-Point Computation
- •GL State
- •GL Command Syntax
- •Basic GL Operation
- •GL Errors
- •Begin/End Paradigm
- •Begin and End
- •Polygon Edges
- •GL Commands within Begin/End
- •Vertex Specification
- •Vertex Arrays
- •Buffer Objects
- •Vertex Arrays in Buffer Objects
- •Array Indices in Buffer Objects
- •Rectangles
- •Coordinate Transformations
- •Controlling the Viewport
- •Matrices
- •Normal Transformation
- •Generating Texture Coordinates
- •Clipping
- •Current Raster Position
- •Colors and Coloring
- •Lighting
- •ColorMaterial
- •Lighting State
- •Color Index Lighting
- •Clamping or Masking
- •Flatshading
- •Color and Associated Data Clipping
- •Final Color Processing
- •Vertex Shaders
- •Shader Objects
- •Program Objects
- •Shader Variables
- •Shader Execution
- •Required State
- •Rasterization
- •Invariance
- •Antialiasing
- •Multisampling
- •Points
- •Basic Point Rasterization
- •Point Rasterization State
- •Point Multisample Rasterization
- •Line Segments
- •Basic Line Segment Rasterization
- •Other Line Segment Features
- •Line Rasterization State
- •Line Multisample Rasterization
- •Polygons
- •Basic Polygon Rasterization
- •Stippling
- •Antialiasing
- •Options Controlling Polygon Rasterization
- •Depth Offset
- •Polygon Multisample Rasterization
- •Polygon Rasterization State
- •Pixel Rectangles
- •Pixel Storage Modes
- •The Imaging Subset
- •Pixel Transfer Modes
- •Rasterization of Pixel Rectangles
- •Pixel Transfer Operations
- •Pixel Rectangle Multisample Rasterization
- •Bitmaps
- •Texturing
- •Compressed Texture Images
- •Texture Parameters
- •Depth Component Textures
- •Cube Map Texture Selection
- •Texture Wrap Modes
- •Texture Completeness
- •Texture State and Proxy State
- •Texture Objects
- •Texture Environments and Texture Functions
- •Texture Comparison Modes
- •Texture Application
- •Color Sum
- •Fragment Shaders
- •Shader Variables
- •Shader Execution
- •Antialiasing Application
- •Multisample Point Fade
- •Per-Fragment Operations
- •Pixel Ownership Test
- •Scissor Test
- •Multisample Fragment Operations
- •Alpha Test
- •Stencil Test
- •Depth Buffer Test
- •Occlusion Queries
- •Blending
- •Dithering
- •Logical Operation
- •Additional Multisample Fragment Operations
- •Whole Framebuffer Operations
- •Selecting a Buffer for Writing
- •Fine Control of Buffer Updates
- •Clearing the Buffers
- •The Accumulation Buffer
- •Drawing, Reading, and Copying Pixels
- •Writing to the Stencil Buffer
- •Reading Pixels
- •Copying Pixels
- •Pixel Draw/Read State
- •Special Functions
- •Evaluators
- •Selection
- •Feedback
- •Display Lists
- •Flush and Finish
- •Hints
- •State and State Requests
- •Querying GL State
- •Simple Queries
- •Data Conversions
- •Enumerated Queries
- •Texture Queries
- •Stipple Query
- •Color Matrix Query
- •Color Table Query
- •Convolution Query
- •Histogram Query
- •Minmax Query
- •Pointer and String Queries
- •Occlusion Queries
- •Buffer Object Queries
- •Shader and Program Queries
- •Saving and Restoring State
- •State Tables
- •Invariance
- •Corollaries
- •Version 1.1
- •Version 1.2
- •Imaging Subset
- •Version 1.2.1
- •Version 1.3
- •Version 1.4
- •Fog Coordinate
- •Texture LOD Bias
- •Version 1.5
- •Version 2.0
- •ARB Extensions
- •Texture Mirrored Repeat
- •OpenGL Shading Language

D.7. TEXTURE LEVEL OF DETAIL CONTROL |
313 |
The additions match those of the SGIS texture edge clamp extension.
D.7 Texture Level of Detail Control
Two constraints related to the texture level of detail parameter λ are added. One constraint clamps λ to a specified floating point range. The other limits the selection of mipmap image arrays to a subset of the arrays that would otherwise be considered.
Together these constraints allow a large texture to be loaded and used initially at low resolution, and to have its resolution raised gradually as more resolution is desired or available. Image array specification is necessarily integral, rather than continuous. By providing separate, continuous clamping of the λ parameter, it is possible to avoid ”popping” artifacts when higher resolution images are provided.
The additions match those of the SGIS texture lod extension.
D.8 Vertex Array Draw Element Range
A new form of DrawElements that provides explicit information on the range of vertices referred to by the index set is added. Implementations can take advantage of this additional information to process vertex data without having to scan the index data to determine which vertices are referenced.
The additions match those of the EXT draw range elements extension.
D.9 Imaging Subset
The remaining new features are primarily intended for advanced image processing applications, and may not be present in all GL implementations. The are collectively referred to as the imaging subset.
D.9.1 Color Tables
A new RGBA-format color lookup mechanism is defined in the pixel transfer process, providing additional lookup capabilities beyond the existing lookup. The key difference is that the new lookup tables are treated as one-dimensional images with internal formats, like texture images and convolution filter images. Thus the new tables can operate on a subset of the components of passing pixel groups. For example, a table with internal format ALPHA modifies only the A component of each pixel group, leaving the R, G, and B components unmodified.
Version 2.0 - October 22, 2004

D.9. IMAGING SUBSET |
314 |
Three independent lookups may be performed: prior to convolution; after convolution and prior to color matrix transformation; after color matrix transformation and prior to gathering pipeline statistics.
Methods to initialize the color lookup tables from the framebuffer, in addition to the standard memory source mechanisms, are provided.
Portions of a color lookup table may be redefined without reinitializing the entire table. The affected portions may be specified either from host memory or from the framebuffer.
The additions match those of the EXT color table and
EXT color subtable extensions.
D.9.2 Convolution
Oneor two-dimensional convolution operations are executed following the first color table lookup in the pixel transfer process. The convolution kernels are themselves treated as oneand two-dimensional images, which can be loaded from application memory or from the framebuffer.
The convolution framework is designed to accommodate three-dimensional convolution, but that API is left for a future extension.
The additions match those of the EXT convolution and
HP convolution border modes extensions.
D.9.3 Color Matrix
A 4x4 matrix transformation and associated matrix stack are added to the pixel transfer path. The matrix operates on RGBA pixel groups, using the equation
C0 = MC,
where
R
G C = B
A
and M is the 4 × 4 matrix on the top of the color matrix stack. After the matrix multiplication, each resulting color component is scaled and biased by a programmed amount. Color matrix multiplication follows convolution.
The color matrix can be used to reassign and duplicate color components. It can also be used to implement simple color space conversions.
The additions match those of the SGI color matrix extension.
Version 2.0 - October 22, 2004

D.10. ACKNOWLEDGEMENTS |
315 |
D.9.4 Pixel Pipeline Statistics
Pixel operations that count occurences of specific color component values (histogram) and that track the minimum and maximum color component values (minmax) are performed at the end of the pixel transfer pipeline. An optional mode allows pixel data to be discarded after the histogram and/or minmax operations are completed. Otherwise the pixel data continues on to the next operation unaffected.
The additions match those of the EXT histogram extension.
D.9.5 Constant Blend Color
A constant color that can be used to define blend weighting factors may be defined. A typical usage is blending two RGB images. Without the constant blend factor, one image must have an alpha channel with each pixel set to the desired blend factor.
The additions match those of the EXT blend color extension.
D.9.6 New Blending Equations
Blending equations other than the normal weighted sum of source and destination components may be used.
Two of the new equations produce the minimum (or maximum) color components of the source and destination colors. Taking the maximum is useful for applications such as maximum projection in medical imaging.
The other two equations are similar to the default blending equation, but produce the difference of its left and right hand sides, rather than the sum. Image differences are useful in many image processing applications.
The additions match those of the and
EXT blend subtract extensions.
D.10 Acknowledgements
OpenGL 1.2 is the result of the contributions of many people, representing a cross section of the computer industry. Following is a partial list of the contributors, including the company that they represented at the time of their contribution:
Kurt Akeley, Silicon Graphics
Bill Armstrong, Evans & Sutherland Otto Berkes, Microsoft
Pierre-Luc Bisaillon, Matrox Graphics Drew Bliss, Microsoft
Version 2.0 - October 22, 2004
D.10. ACKNOWLEDGEMENTS |
316 |
David Blythe, Silicon Graphics
Jon Brewster, Hewlett Packard
Dan Brokenshire, IBM
Pat Brown, IBM
Newton Cheung, S3
Bill Clifford, Digital
Jim Cobb, Parametric Technology
Bruce D’Amora, IBM
Kevin Dallas, Microsoft
Mahesh Dandapani, Rendition
Daniel Daum, AccelGraphics
Suzy Deffeyes, IBM
Peter Doyle, Intel
Jay Duluk, Raycer
Craig Dunwoody, Silicon Graphics
Dave Erb, IBM
Fred Fisher, AccelGraphics / Dynamic Pictures
Celeste Fowler, Silicon Graphics
Allen Gallotta, ATI
Ken Garnett, NCD
Michael Gold, Nvidia / Silicon Graphics
Craig Groeschel, Metro Link
Jan Hardenbergh, Mitsubishi Electric
Mike Heck, Template Graphics Software
Dick Hessel, Raycer Graphics
Paul Ho, Silicon Graphics
Shawn Hopwood, Silicon Graphics
Jim Hurley, Intel
Phil Huxley, 3Dlabs
Dick Jay, Template Graphics Software
Paul Jensen, 3Dfx
Brett Johnson, Hewlett Packard
Michael Jones, Silicon Graphics
Tim Kelley, Real3D
Jon Khazam, Intel
Louis Khouw, Sun
Dale Kirkland, Intergraph
Chris Kitrick, Raycer
Don Kuo, S3
Herb Kuta, Quantum 3D
Version 2.0 - October 22, 2004
D.10. ACKNOWLEDGEMENTS |
317 |
Phil Lacroute, Silicon Graphics Prakash Ladia, S3
Jon Leech, Silicon Graphics Kevin Lefebvre, Hewlett Packard David Ligon, Raycer Graphics Kent Lin, S3
Dan McCabe, S3 Jack Middleton, Sun Tim Misner, Intel
Bill Mitchell, National Institute of Standards Jeremy Morris, 3Dlabs
Gene Munce, Intel William Newhall, Real3D
Matthew Papakipos, Nvidia / Raycer Garry Paxinos, Metro Link Hanspeter Pfister, Mitsubishi Electric
Richard Pimentel, Parametric Technology Bimal Poddar, IBM / Intel
Rob Putney, IBM Mike Quinlan, Real3D
Nate Robins, University of Utah Detlef Roettger, Elsa
Randi Rost, Hewlett Packard Kevin Rushforth, Sun Richard S. Wright, Real3D Hock San Lee, Microsoft
John Schimpf, Silicon Graphics Stefan Seeboth, ELSA
Mark Segal, Silicon Graphics Bob Seitsinger, S3
Min-Zhi Shao, S3 Colin Sharp, Rendition Igor Sinyak, Intel
Bill Sweeney, Sun William Sweeney, Sun Nathan Tuck, Raycer Doug Twillenger, Sun John Tynefeld, 3dfx Kartik Venkataraman, Intel
Andy Vesper, Digital Equipment
Version 2.0 - October 22, 2004
D.10. ACKNOWLEDGEMENTS |
318 |
Henri Warren, Digital Equipment / Megatek
Paula Womack, Silicon Graphics
Steve Wright, Microsoft
David Yu, Silicon Graphics
Randy Zhao, S3
Version 2.0 - October 22, 2004