Скачиваний:
47
Добавлен:
17.03.2015
Размер:
2.46 Mб
Скачать

Appendix I

Version 2.0

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

Following are brief descriptions of each addition to OpenGL 2.0.

I.1 Programmable Shading

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:

I.1.1 Shader Objects

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

I.1.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.

340

I.2. MULTIPLE RENDER TARGETS

341

I.1.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).

I.1.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.

I.2 Multiple Render Targets

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.

I.3 Non-Power-Of-Two Textures

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.

Version 2.0 - October 22, 2004

I.4. POINT SPRITES

342

I.4 Point Sprites

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.

I.5 Separate Stencil

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.

I.6 Other Changes

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 by WindowPos.

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.

Version 2.0 - October 22, 2004

I.7. ACKNOWLEDGEMENTS

343

After the initial version of the OpenGL 2.0 was released, several more minor corrections were made in the specification revision approved on October 22, 2004:

Corrected name of the fog source from FOG COORD SRC to FOG COORD in section 2.13.

Corrected last parameter type in the declaration of the UniformMatrix*

commands to const float *value, in section 2.15.3.

Changed the end of the second paragraph of the Conversion to Fragments subsection of section 3.6.4, to more clearly describe the set of generated fragments.

Changed from the older FOG COORDINATE to the newer FOG COORD notation in section 3.10.

Added POINT SPRITE COORD ORIGIN state to table 6.13.

Changed the description of MAX TEXTURE UNITS in table 6.34 to reflect its legacy status (referring to the number of fixed-function texture units), and moved it into table 6.35.

Removed duplicated table entries for MAX TEXTURE IMAGE UNITS and

MAX TEXTURE COORDS from table 6.35.

Added Victor Vedovato to the OpenGL 2.0 Acknowledgements section.

Miscellaneous typographical corrections.

I.7 Acknowledgements

OpenGL 2.0 is the result of the contributions of many people. The editor especially thanks the ongoing work of the ARB GL2 working group, lead by Bill LiceaKane and with specifications edited by John Kessenich and Barthold Lichtenbelt, in performing work necessary to promote the OpenGL Shading Language to a core OpenGL feature.

A partial list of other contributors, including the company that they represented at the time of their contribution, follows:

Kurt Akeley, NVIDIA Allen Akin

Dave Baldwin, 3Dlabs Bob Beretta, Apple

Version 2.0 - October 22, 2004

I.7. ACKNOWLEDGEMENTS

344

Pat Brown, NVIDIA

Matt Craighead, NVIDIA

Suzy Deffeyes, IBM

Ken Dyke, Apple

Cass Everitt, NVIDIA

Steve Glanville, NVIDIA

Michael I. Gold, NVIDIA

Evan Hart, ATI

Phil Huxley, 3Dlabs

Deron Dann Johnson, Sun

John Kessenich, 3Dlabs

Mark Kilgard, NVIDIA

Dale Kirkland, 3Dlabs

Steve Koren, 3Dlabs

Jon Leech, SGI

Bill Licea-Kane, ATI

Barthold Lichtenbelt, 3Dlabs

Kent Lin, Intel

Benjamin Lipchak, ATI

Rob Mace, ATI

Michael McCool, U. Waterloo

Jack Middleton, Sun

Jeremy Morris, 3Dlabs

Teri Morrison, 3Dlabs

Marc Olano, SGI / U. Maryland

Glenn Ortner, ATI

Brian Paul, Tungsten Graphics

Bimal Poddar, Intel

Phil Rogers, ATI

Ian Romanick, IBM

Randi Rost, 3Dlabs

Jeremy Sandmel, ATI

Folker Schamel, Spinor GMBH

Geoff Stahl, Apple

Eskil Steenberg, Obsession

Neil Trevett, 3Dlabs

Victor Vedovato, ATI

Mik Wells, Softimage

Esen Yilmaz, Intel

Dave Zenz, Dell

Version 2.0 - October 22, 2004

Соседние файлы в папке OpenGL