Jump to content
4 posts in this topic

Recommended Posts

What's New in OpenGL 2.1

OpenGL version 2.1, released on August 2, 2006, is the seventh revision since the original version 1.0. Despite incrementing the major version number (to indicate support for high-level programmable shaders), version 2.1 is upward compatible with earlier versions, meaning that any program that runs with a 2.0, 1.5, 1.4, 1.3, 1.2, 1.1, or 1.0 GL implementation will also run unchanged with a 2.1 GL implementation.

OpenGL 2.1 adds backwards compatible enhancements to OpenGL's advanced programmable pipeline including: Pixel Buffer Objects for fast texture and pixel copies between frame buffer and buffer objects in GPU memory; texture images specified in standard sRGB color space for enhanced application color management flexibility; and numerous additions to increase the flexibility of shader programming including non-square matrix support, support for arrays as first-class objects, a fragment position query in shaders using Point Sprites and an invariant attribute for variables to enhance shader code reliability.

Download OpenGL 2.1 specification

Following are brief descriptions of the primary additions to OpenGL 2.1

• OpenGL Shading Language

o OpenGL 2.1 implementations must support at least revision 1.20 of the OpenGL Shading Language. Implementations may query the SHADING LANGUAGE VERSION string to determine the exact version of the language supported. Refer to the OpenGL Shading Language Specification for details of the changes between revision 1.10 and 1.20.

• Non-Square Matrices

o Added the UniformMatrix {2x3,3x2,2x4,4x2,3x4,4x3}fv commands allowing specification of non-square uniform matrices.

• Pixel Buffer Objects

o Pixel buffer objects expand on the interface provided by the vertex buffer objects, allowing buffer objects to be used with both vertex array and pixel data. This allows more acceleration opportunities for OpenGL pixel commands.

• sRGB Textures

o New uncompressed and compressed color texture formats with sRGB color com- ponents are defined. The sRGB color space is based on typical (non-linear) monitor characteristics expected in a dimly lit office. It has been standardized by the International Electrotechnical Commission (IEC) as IEC 61966-2-1. The sRGB color space roughly corresponds to 2.2 gamma correction. sRGB textures was promoted from the GL EXT texture sRGB extension.

Following are brief descriptions of each addition to the base OpenGL 2.0 specification.

• Programmable Shading

o The OpenGL Shading Language, and the related APIs to create, manage, and use programmable shaders written in the Shading Language, were promoted to core features in OpenGL 2.0. The complete list of features related to programmable shading includes:

1. Shader Objects

 Shader objects provides mechanisms necessary to manage shader and program objects. Shader objects were promoted from the ARB shader objects extension.

2. Shader Programs

 Vertex and fragment shader programs may be written in the high-level OpenGL Shading Language, replacing fixed-functionality vertex and fragment processing respectively. Vertex and fragment shader programs were promoted from the ARB vertex shader and ARB fragment shader extensions.

3. OpenGL Shading Language

 The OpenGL Shading Language is a high-level, C-like language used to program the vertex and fragment pipelines. The Shading Language Specification defines the language proper, while OpenGL API features control how vertex and fragment programs interact with the fixed-function OpenGL pipeline and how applications manage those programs.

OpenGL 2.0 implementations must support at least revision 1.10 of the OpenGL Shading Language. Implementations may query the SHADING LANGUAGE VERSION string to determine the exact version of the language supported. The OpenGL Shading Language was promoted from the ARB shading language 100 extension (the shading language itself is specified in a companion document; due to the way it's written, that document did not need to be changed as a consequence of promoting programmable shading to the OpenGL core).

4. Changes To Shader APIs

 Small changes to the APIs for managing shader and program objects were made in the process of promoting the shader extensions to the OpenGL 2.0 core. These changes do not affect the functionality of the shader APIs, but include use of the existing uint core GL type rather than the new handleARB type introduced by the extensions, and changes in some function names, for example mapping the extension function CreateShaderObjectARB into the core function CreateShader.

• Multiple Render Targets

o Programmable shaders may write different colors to multiple output color buffers in a single pass. Multiple render targets was promoted from the ARB draw buffers extension.

• Non-Power-Of-Two Textures

o The restriction of textures to power-of-two dimensions has been relaxed for all texture targets, so that non-power-of-two textures may be specified without generating errors. Non-power-of-two textures was promoted from the ARB texture non power of two extension.

• Point Sprites

o Point sprites replace point texture coordinates with texture coordinates interpolated across the point. This allows drawing points as customized textures, useful for particle systems.

Point sprites were promoted from the ARB point sprite extension, with the further addition of the POINT SPRITE COORD ORIGIN parameter controlling the direction in which the t texture coordinate increases.

• Separate Stencil

o Separate stencil functionality may be defined for the front and back faces of primitives, improving performance of shadow volume and Constructive Solid Geometry rendering algorithms.

Separate stencil was based on the the API of the ATI separate stencil extension, with additional state defined by the similar EXT stencil two side extension.

• Other Changes

o Several minor revisions and corrections to the OpenGL 1.5 specification were made:

 In section 2.7, SecondaryColor3 was changed to set A to 1.0 (previously 0.0), so the initial GL state can be restored.

 In section 2.13, transformation was added to the list of steps not performed byWindowPos.

 Section 3.8.1 was clarified to mandate that selection of texture internal format must allocate a non-zero number of bits for all components named by the internal format, and zero bits for all other components.

 Tables 3.22 and 3.23 were generalized to multiple textures by replacing Cf with Cp.

 In section 6.1.9, GetHistogram was clarified to note that the Final Conversion pixel storage mode is not applied when storing histogram counts.

 The FOG COORD ARRAY BUFFER BINDING enumerant alias was added to table H.1.

________________________________________

Column Header

Documentation

• About OpenGL 2.1

• Specifications

• OpenGL Shading Language

• OpenGL Extensions

• OpenGL Extension Registry

• OS/Platform Implementations

• OpenGL Reference Manual

• OpenGL Programming Guide

• OpenGL Books

Column Footer

________________________________________

• About Us

• Privacy Policy

• Access Keys

OpenGL is a registered trademark of SGI

Website Copyright 2006 OpenGL.org. All rights reserved.

  • 3 months later...
×
×
  • Create New...