Overview

OpenGL was first created as an open and reproducable alternative to Iris GL which had been the proprietary graphics API on Silicon Graphics workstations. Although OpenGL was initially similar in some respects to IrisGL the lack of a formal specification and conformance tests made Iris GL unsuitable for broader adoption. Mark Segal and Kurt Akeley authored the OpenGL 1.0 specification which tried to formalize the definition of a useful graphics API and made cross platform non-SGI 3rd party implementation and support viable. One notable omission from version 1.0 of the API was texture objects. IrisGL had definition and bind stages for all sorts of objects including materials, lights, textures and texture environments. OpenGL eschewed these objects in favor of incremental state changes with the idea that collective changes could be encapsulated in display lists. This has remained the philosophy with the exception that texture objects (glBindTexture) with no distinct definition stage are a key part of the API.

OpenGL has been through a number of revisions which have predominantly been incremental additions where extensions to the core API have gradually been incorporated into the main body of the API. For example OpenGL 1.1 added the glBindTexture extension to the core API.

OpenGL 2.0 incorporates the significant addition of the OpenGL Shading Language (also called GLSL), a C like language with which the transformation and fragment shading stages of the pipeline can be programmed.

OpenGL 3.0 adds the notion of backwards compatible context and forward compatible context. In forward mode, certain old GL functions don't work since they are considered old/deprecated/should not be used/there is a better and more modern way. Example, glBegin, glVertex, glEnd was the GL 1.0 method of submitting vertices. Since GL 1.5, VBO is added which is more efficient.

Summary of version changes

This is summary of all changes made in OpenGL specifications through its development. More information about changes may be obtained in OpenGL specification for the version. (In appendix.)

Almost all additions are promoted from some extensions.

OpenGL 1.0 (1992)

First release.

OpenGL 1.1 (1992)

Addition

Promoted from

Vertex arrays

EXT_vertex_array

Polygon offset

EXT_polygon_offset

Logical operation

EXT_blend_logic_op

Internal texture formats

EXT_texture

GL_REPLACE texture env

EXT_texture

Texture proxy

EXT_texture

Copy texture and subtexture

EXT_copy_texture, EXT_subtexture

Texture objects

EXT_texture_object

OpenGL 1.2 (1998)

Addition

Promoted from

3D textures

EXT_texture3D

BGRA pixel formats

EXT_bgra

Packed pixel formats

EXT_packed_pixels

Normal rescaling

EXT_rescale_normal

Separate specular color

EXT_separate_specular_color

Texture coordinate edge clamping

SGIS_texture_edge_clamp

Texture LOD control

SGIS_texture_lod

Vertex array draw element range

EXT_draw_range_elements

Imaging subset (optional)

Addition

Promoted from

Color Tables

EXT_color_table, EXT_color_subtable

Convolution

EXT_convolution, EXT_convolution_border_modes

Color matrix

EXT_color_matrix

Pixel data statistics

EXT_histogram

Constant blend color

EXT_blend_color

New blending equations

EXT_blend_minmax, EXT_blend_substract

OpenGL 1.2.1 (1998)

This version defines ARB extensions concept. ARB extensions are not required to be supported by a conformant OpenGL
implementation, but are expected to be widely available; they define
functionality that is likely to move into the required feature set in a future
revision of the specification.

GL implementations of such later revisions should continue to export the name
strings of promoted extensions in the EXTENSIONS string, and continue to support
the ARB-affixed versions of functions and enumerants as a transition aid.