All Topics  
OpenGL

 
OpenGL

   Email Print
   Bookmark   Link






 

OpenGL



 
 
OpenGL (Open Graphics Library) is a standard specification defining a cross-language cross-platform
Cross-platform

In computing, cross-platform is a term used to refer to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms....
 API
Application programming interface

An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
 for writing applications that produce 2D
2D computer graphics

2D computer graphics is the computer-based generation of digital images—mostly from two-dimensional models and by techniques specific to them....
 and 3D computer graphics
3D computer graphics

3D computer graphics are graphics that use a Cartesian coordinate system#Three-dimensional coordinate system representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images....
. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives
Geometric primitive

The term geometric primitive in computer graphics and CAD systems is used in various senses, with common meaning of atomic geometric objects the system can handle ....
. OpenGL was developed by Silicon Graphics Inc.
Silicon Graphics

Silicon Graphics, Inc. is a company manufacturer high-performance computing solutions, including computer hardware and computer software. SGI was founded by James H....
 (SGI) in 1992 and is widely used in CAD, virtual reality
Virtual reality

Virtual reality is a technology which allows a user to interact with a computer-simulated environment, whether that environment is a simulation of the real world or an imaginary world....
, scientific visualization, information visualization, and flight simulation
Flight simulator

A flight simulator is a system that tries to copy, or simulation, the experience of flight an aircraft. It is as realistic as possible. The different types of flight simulator range from video games up to full-size cockpit replicas mounted on hydraulic actuators, controlled by state of the art computer technology....
.






Discussion
Ask a question about 'OpenGL'
Start a new discussion about 'OpenGL'
Answer questions from other users
Full Discussion Forum



Encyclopedia


OpenGL (Open Graphics Library) is a standard specification defining a cross-language cross-platform
Cross-platform

In computing, cross-platform is a term used to refer to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms....
 API
Application programming interface

An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
 for writing applications that produce 2D
2D computer graphics

2D computer graphics is the computer-based generation of digital images—mostly from two-dimensional models and by techniques specific to them....
 and 3D computer graphics
3D computer graphics

3D computer graphics are graphics that use a Cartesian coordinate system#Three-dimensional coordinate system representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images....
. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives
Geometric primitive

The term geometric primitive in computer graphics and CAD systems is used in various senses, with common meaning of atomic geometric objects the system can handle ....
. OpenGL was developed by Silicon Graphics Inc.
Silicon Graphics

Silicon Graphics, Inc. is a company manufacturer high-performance computing solutions, including computer hardware and computer software. SGI was founded by James H....
 (SGI) in 1992 and is widely used in CAD, virtual reality
Virtual reality

Virtual reality is a technology which allows a user to interact with a computer-simulated environment, whether that environment is a simulation of the real world or an imaginary world....
, scientific visualization, information visualization, and flight simulation
Flight simulator

A flight simulator is a system that tries to copy, or simulation, the experience of flight an aircraft. It is as realistic as possible. The different types of flight simulator range from video games up to full-size cockpit replicas mounted on hydraulic actuators, controlled by state of the art computer technology....
. It is also used in video games, where it competes with Direct3D
Direct3D

Direct3D is part of Microsoft's DirectX application programming interface. Direct3D is only available for Microsoft's various Microsoft Windows operating systems and is the base for the graphics API on the Xbox and Xbox 360 console systems....
 on Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 platforms (see Direct3D vs. OpenGL). OpenGL is managed by the non-profit technology consortium, the Khronos Group
Khronos Group

The Khronos Group is a member-funded industry consortium focused on the creation of open standard, royalty-free Application programming interface to enable the authoring and accelerated playback of dynamic media on a wide variety of platforms and devices....
.

Specification

At its most basic level OpenGL is a specification, meaning it is simply a document that describes a set of functions and the precise behaviours that they must perform. From this specification, hardware vendors create implementations — libraries of functions created to match the functions stated in the OpenGL specification, making use of hardware acceleration where possible. Hardware vendors have to meet specific tests to be able to qualify their implementation as an OpenGL implementation.

Efficient vendor-supplied implementations of OpenGL (making use of graphics acceleration hardware to a greater or lesser extent) exist for Mac OS
Mac OS

Mac OS is the trademarked name for a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems....
, Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
, Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
 and many Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
 platforms. Various software implementations exist, bringing OpenGL to a variety of platforms that do not have vendor support. Notably, the free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
/open source library Mesa 3D
Mesa 3D

Mesa 3D is an Open source software 3D computer graphics Library that provides a generic OpenGL implementation for rendering three-dimensional graphics on multiple platform ....
 is a fully software-based graphics API which is code-compatible with OpenGL. However to avoid licensing costs associated with formally calling itself an OpenGL implementation, it claims merely to be a "very similar" API. On some platforms, notably mobile phones, handhelds and game consoles, a reduced API OpenGL ES
OpenGL ES

OpenGL ES is a subset of the OpenGL 3D computer graphics Application programming interface designed for embedded devices such as mobile phones, Personal digital assistants, and video game consoles....
 is often used.

The OpenGL specification was revised by OpenGL Architecture Review Board
OpenGL Architecture Review Board

The OpenGL Architecture Review Board is an industry consortium that governed the OpenGL specification.It was formed in 1992, and defined the conformance tests, approved the OpenGL specification and advanced the standard....
 (ARB) founded in 1992. The ARB was formed by a set of companies interested in the creation of a consistent and widely available API. Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
, one of the founding members, left the project in 2003.

On 21 September 2006, control of OpenGL passed to the Khronos Group
Khronos Group

The Khronos Group is a member-funded industry consortium focused on the creation of open standard, royalty-free Application programming interface to enable the authoring and accelerated playback of dynamic media on a wide variety of platforms and devices....
. This was done in order to improve the marketing of OpenGL, and to remove barriers between the development of OpenGL and OpenGL ES
OpenGL ES

OpenGL ES is a subset of the OpenGL 3D computer graphics Application programming interface designed for embedded devices such as mobile phones, Personal digital assistants, and video game consoles....
. The subgroup of Khronos that manages OpenGL was called the OpenGL ARB Working Group, for historical reasons. There is a list of members which make up the OpenGL ARB Working Group at section Members of Khronos Group
Khronos Group

The Khronos Group is a member-funded industry consortium focused on the creation of open standard, royalty-free Application programming interface to enable the authoring and accelerated playback of dynamic media on a wide variety of platforms and devices....
. OpenGL is a general purpose API with lots of different possibilities because of the great number of companies with different interests which have made up the old ARB as well the current group.

Mark Segal and Kurt Akeley
Kurt Akeley

Kurt Akeley is a computer graphics engineer....
 authored the original OpenGL specification. Chris Frazier edited version 1.1. Jon Leech edited versions 1.2 through the present version 3.0. Jon Leech has retired as secretary of the old ARB, and Barthold Lichtenbelt has taken his place as Khronos OpenGL ARB Steering Group Chair .

Design

OpenGL serves two main purposes:
  • To hide the complexities of interfacing with different 3D accelerators, by presenting the programmer with a single, uniform API.
  • To hide the differing capabilities of hardware platforms, by requiring that all implementations support the full OpenGL feature set (using software emulation if necessary).


OpenGL's basic operation is to accept primitives such as points, lines and polygons, and convert them into pixels. This is done by a graphics pipeline
Graphics pipeline

In 3D computer graphics, the terms graphics pipeline or rendering pipeline most commonly refer to the current state of the art method of rasterization-based rendering as supported by commodity graphics hardware....
 known as the . Most OpenGL commands either issue primitives to the graphics pipeline, or configure how the pipeline processes these primitives. Prior to the introduction of OpenGL 2.0, each stage of the pipeline performed a fixed function and was configurable only within tight limits. OpenGL 2.0 offers several stages that are fully programmable using GLSL
GLSL

GLSL , also known as GLslang, is a High level programming language shading language based on the C . It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use assembly language or hardware-specific languages....
.

OpenGL is a low-level, procedural API, requiring the programmer to dictate the exact steps required to render a scene. This contrasts with descriptive (aka scene graph
Scene graph

A scene graph is a general data structure commonly used by vector graphics applications and modern computer games. Examples of such programs include AutoCAD, Adobe Illustrator, Acrobat 3D, OpenSceneGraph and CorelDRAW....
 or retained mode
Retained mode

In computing, retained mode rendering is a style for application programming interfaces of graphics libraries, in which the libraries retain a complete model of the objects to be rendered....
) APIs, where a programmer only needs to describe a scene and can let the library manage the details of rendering it. OpenGL's low-level design requires programmers to have a good knowledge of the graphics pipeline, but also gives a certain amount of freedom to implement novel rendering algorithms.

OpenGL has historically been influential on the development of 3D accelerators, promoting a base level of functionality that is now common in consumer-level hardware:
  • Rasterised points
    Rasterisation

    Rasterization or Rasterisation is the task of taking an image described in a vector graphics format and converting it into a raster image for output on a computer display or computer printer, or for storage in a bitmap file format....
    , lines and polygons as basic primitives
  • A transform and lighting pipeline
  • Z-buffering
    Z-buffering

    In computer graphics, z-buffering is the management of image depth coordinates in three-dimensional graphics, usually done in hardware, sometimes in software....
  • Texture mapping
    Texture mapping

    Texture mapping is a method for adding detail, surface texture, or colour to a computer-generated imagery or 3D model. Its application to 3D graphics was pioneered by Dr Edwin Catmull in his Ph.D....
  • Alpha blending


A brief description of the process in the graphics pipeline could be:
  1. Evaluation, if necessary, of the polynomial functions which define certain inputs, like NURBS
    Nonuniform rational B-spline

    Non-uniform rational B-spline is a mathematical model commonly used in computer graphics for generating and representing curves and surfaces....
     surfaces, approximating curves and the surface geometry.
  2. Vertex operations, transforming and lighting them depending on their material. Also clipping non visible parts of the scene in order to produce the viewing volume.
  3. Rasterisation
    Rasterisation

    Rasterization or Rasterisation is the task of taking an image described in a vector graphics format and converting it into a raster image for output on a computer display or computer printer, or for storage in a bitmap file format....
     or conversion of the previous information into pixels. The polygons are represented by the appropriate colour by means of interpolation algorithms.
  4. Per-fragment operations, like updating values depending on incoming and previously stored depth values, or colour combinations, among others.
  5. Lastly, fragments are inserted into the Frame buffer
    Framebuffer

    A framebuffer is a video output device that drives a video display from a memory buffer containing a complete video frame of data. The information in the buffer typically consists of color values for every pixel on the screen....
    .


Many modern 3D accelerators provide functionality far above this baseline, but these new features are generally enhancements of this basic pipeline rather than radical revisions of it.

Example

This example will draw a green square on the screen. OpenGL has several ways to accomplish this task, but this is the easiest to understand.

glClear( GL_COLOR_BUFFER_BIT );
This statement clears the color buffer, so that the screen will start blank.


glMatrixMode( GL_PROJECTION ); /* Subsequent matrix commands will affect the projection matrix */ glLoadIdentity; /* Initialise the projection matrix to identity */ glFrustum( -1, 1, -1, 1, 1, 1000 ); /* Apply a perspective-projection matrix */
These statements initialize the projection matrix, setting a 3d frustum
Frustum

A frustum is the portion of a solid?normally a Cone or pyramid ?which lies between two parallel planes cutting the solid. The term is commonly used in computer graphics to describe the 3d area which is visible on the screen ....
 matrix that represents the viewable area. This matrix transforms objects from camera-relative space to OpenGL's projection space.


glMatrixMode( GL_MODELVIEW ); /* Subsequent matrix commands will affect the modelview matrix */ glLoadIdentity; /* Initialise the modelview to identity */ glTranslatef( 0, 0, -3 ); /* Translate the modelview 3 units along the Z axis */
These statements initialize the modelview matrix. This matrix defines a transform from model-relative coordinates to camera space. The combination of the modelview matrix and the projection matrix transforms objects from model-relative space to projection screen space.


glBegin( GL_POLYGON ); /* Begin issuing a polygon */ glColor3f( 0, 1, 0 ); /* Set the current color to green */ glVertex3f( -1, -1, 0 ); /* Issue a vertex */ glVertex3f( -1, 1, 0 ); /* Issue a vertex */ glVertex3f( 1, 1, 0 ); /* Issue a vertex */ glVertex3f( 1, -1, 0 ); /* Issue a vertex */ glEnd; /* Finish issuing the polygon */
These commands draw a green square in the XY plane.


Documentation

OpenGL's popularity is partially due to the excellence of its official documentation. The OpenGL ARB released a series of manuals along with the specification which have been updated to track changes in the API. These are almost universally known by the colors of their covers:

  • The Red Book – OpenGL Programming Guide, 6th edition. ISBN 0-321-48100-3
    A readable tutorial and reference book – this is a 'must have' book for OpenGL programmers. The first edition is available online and .
  • The Blue Book – OpenGL Reference manual, 4th edition. ISBN 0-321-17383-X
    Essentially a hard-copy printout of the man pages for OpenGL.
    Includes a poster-sized fold-out diagram showing the structure of an idealised OpenGL implementation. It is available .
  • The Green Book – OpenGL Programming for the X Window System. ISBN 0-201-48359-9
    A book about X11 interfacing and GLUT
    OpenGL Utility Toolkit

    The OpenGL Utility widget toolkit is a library of utilities for OpenGL programs, which primarily perform system-level input/output with the host operating system....
    .
  • The Alpha Book (which actually has a white cover) – OpenGL Programming for Windows 95 and Windows NT. ISBN 0-201-40709-4
    A book about interfacing OpenGL with Microsoft Windows.


Then, for OpenGL 2.0 and beyond:

  • The Orange Book – OpenGL Shading Language, 2nd edition. ISBN 0-321-33489-2
    A readable tutorial and reference book for GLSL
    GLSL

    GLSL , also known as GLslang, is a High level programming language shading language based on the C . It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use assembly language or hardware-specific languages....
    .


Extensions

The OpenGL standard allows individual vendors to provide additional functionality through extensions as new technology is created. Extensions may introduce new functions and new constants, and may relax or remove restrictions on existing OpenGL functions. Each vendor has an alphabetic abbreviation that is used in naming their new functions and constants. For example, NVIDIA's abbreviation (NV) is used in defining their proprietary function glCombinerParameterfvNV and their constant GL_NORMAL_MAP_NV.

It may happen that more than one vendor agrees to implement the same extended functionality. In that case, the abbreviation EXT is used. It may further happen that the Architecture Review Board "blesses" the extension. It then becomes known as a standard extension, and the abbreviation ARB is used. The first ARB extension was GL_ARB_multitexture, introduced in version 1.2.1. Following the official extension promotion path, multitexturing is no longer an optionally implemented ARB extension, but has been a part of the OpenGL core API since version 1.3.

Before using an extension a program must first determine its availability, and then obtain pointers to any new functions the extension defines. The mechanism for doing this is platform-specific and libraries such as GLEW and GLEE exist to simplify the process.

Specifications for nearly all extensions can be found at the official extension registry.

Associated utility libraries

Several libraries are built on top of or beside OpenGL to provide features not available in OpenGL itself. Libraries such as GLU can always be found with OpenGL implementations, and others such as GLUT
OpenGL Utility Toolkit

The OpenGL Utility widget toolkit is a library of utilities for OpenGL programs, which primarily perform system-level input/output with the host operating system....
 and SDL
Simple DirectMedia Layer

Simple DirectMedia Layer is a cross-platform, free and open source software multimedia Library written in C that presents a simple interface to various platforms' computer graphics, sound, and input devices, allowing a developer to write a Personal computer game or other multimedia application that can run on many operating systems includi...
 have grown over time and provide rudimentary cross platform windowing and mouse functionality and if unavailable can easily be downloaded and added to a development environment. Simple graphical user interface
Graphical user interface

A graphical user interface is a type of user interface which allows people to human-computer interaction such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment....
 functionality can be found in libraries like GLUI or FLTK
FLTK

The "Fast, Light Toolkit" is a cross-platform graphical user interface library, developed by Bill Spitzak and others. Made with 3D computer graphics programming in mind, it has an interface to OpenGL, but it is still suitable for general GUI programming....
. Still other libraries like AUX
Aux

AUX or Aux may refer to:* A/UX, a Unix-like operating system produced by Apple Computer* An abbreviation of the word Auxiliary* A record label based in Syracuse, NY....
 are deprecated and have been superseded by functionality commonly available in more popular libraries, but code using them still exists, particularly in simple tutorials. Other libraries have been created to provide OpenGL application developers a simple means of managing OpenGL extensions and versioning. Examples of these libraries include GLEW (the OpenGL Extension Wrangler Library) and GLEE (the OpenGL Easy Extension Library).

In addition to the aforementioned simple libraries, other higher level object oriented scene graph retained mode
Retained mode

In computing, retained mode rendering is a style for application programming interfaces of graphics libraries, in which the libraries retain a complete model of the objects to be rendered....
 libraries exist such as PLIB
PLIB

PLIB is a suite of Open Source portable computer game libraries, originally written by Steve Baker in 1997 and licensed under the LGPL.PLIB includes sound effects, music, a complete 3D engine, font rendering, a simple windowing library, a game scripting language, a GUI, networking, 3D math library and a collection of utility functions....
, OpenSG
OpenSG

OpenSG is a scene graph system to create realtime graphics programs, e.g. for virtual reality applications. It is developed following Open Source principles, LGPL licensed, and can be used freely....
, OpenSceneGraph
OpenSceneGraph

OpenSceneGraph is an open source high performance 3D graphics toolkit, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and computer model....
, and OpenGL Performer
OpenGL Performer

OpenGL Performer, formerly known as IRIS Performer and commonly referred to simply as Performer, is a commercial library of utility code built on top of OpenGL for the purpose of enabling Real-time computing visual simulation applications....
. These are available as cross platform free/open source or proprietary
Proprietary software

Proprietary software is a term coined by advocates of the free software movement to describe computer software which is the legal property of one party....
 programming interfaces written on top of OpenGL and systems libraries to enable the creation of real-time
Real-time computing

In computer science, real-time computing is the study of Computer hardware and computer software systems that are subject to a "real-time constraint"?i.e., operational deadlines from event to system response....
 visual simulation applications. Other solutions support parallel OpenGL programs for Virtual Reality
Virtual reality

Virtual reality is a technology which allows a user to interact with a computer-simulated environment, whether that environment is a simulation of the real world or an imaginary world....
, scalability or graphics clusters usage, either transparently like Chromium or through a programming interface like .

Mesa 3D
Mesa 3D

Mesa 3D is an Open source software 3D computer graphics Library that provides a generic OpenGL implementation for rendering three-dimensional graphics on multiple platform ....
 is a free/open source implementation of OpenGL. It supports pure software rendering as well as providing hardware acceleration for several 3D graphics cards under Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
. As of June 22, 2007 it implements the 2.1 standard, and provides some of its own extensions for some platforms.

Bindings

In order to emphasize its multi-language and multi-platform characteristics, various bindings
Binding (computer science)

In computer science, binding is the creation of a simple reference to something that is larger and more complicated and used frequently. The simple reference can be used instead of having to repeat the larger thing....
 and ports
Porting

In computer science, porting is the process of adapting software so that an executable Computer program can be created for a computing environment that is different from the one for which it was originally designed ....
 have been developed for OpenGL in many languages. Some languages and their bindings are:
  • Ada
    Ada (programming language)

    Ada is a structured programming, statically typed, Imperative programming, and Object-oriented programming high-level language computer programming programming language, extended from Pascal and other languages....
    : supports GL, GLU, GLUT, GLX and WGL
  • BlitzMax: OOP language with no runtime. Supports Win32/64, Linux, Mac OS X (PowerPC/Intel). Built in OpenGL support.
  • C#: The framework Tao for Microsoft .NET includes OpenGL between other multimedia libraries
  • D
    D (programming language)

    The D programming language, also known simply as D, is an Object-oriented programming, Imperative programming, Multi-paradigm programming language system programming language by Walter Bright of Digital Mars....
    : See and
  • Delphi
    Borland Delphi

    Delphi is a software development environment for Microsoft Windows applications. It has always supported development of native Windows applications in the Delphi programming language, a further development of Object Pascal....
    :
  • Eiffel
    Eiffel (programming language)

    Eiffel is an International Organization for Standardization-standardized, object-oriented programming language designed to enable programmers to efficiently develop extensible, reusable, reliable software....
    :
  • Fortran
    Fortran

    Fortran is a general-purpose programming language, procedural programming language, imperative programming language programming language that is especially suited to numerical analysis and scientific computing....
    : supports OpenGL 1.2, GLU 1.2 and GLUT 3.7
  • FreeBASIC
    FreeBASIC

    FreeBASIC is a free software/open source , 32-bit BASIC compiler for Microsoft Windows, protected-mode DOS , Linux, and Xbox.FreeBASIC allows a high level of support for Computer programs written for QBasic, by using the "QB" dialect....
    : Native OpenGL support. Built-in OpenGL context creation.
  • Haskell
    Haskell (programming language)

    Haskell is a standardized, purely functional programming language with non-strict programming language, named after logician Haskell Curry. The goals of the language are described as:...
    : supports GL, GLU and GLUT. Included with the latest version of the Glasgow Haskell Compiler
    Glasgow Haskell Compiler

    The Glorious Glasgow Haskell Compilation System, more commonly known as the Glasgow Haskell Compiler or GHC, is an open source Machine language compiler for the functional programming Computer programming Programming language Haskell ....
    .
  • Java
    Java (programming language)

    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
    :
    • Java Bindings for OpenGL
      Java Bindings for OpenGL

      Java Binding for the OpenGL API is a Java Community Process API specification for the Java SE platform which allows to use OpenGL on the Java Platform....
       (JSR 231) and Java OpenGL
      Java OpenGL

      Java OpenGL is a wrapper library that allows OpenGL to be used in the Java . It is currently being developed by the Game Technology Group at Sun Microsystems, and is the reference implementation for Java Bindings for OpenGL ....
       (JOGL)
    • Lightweight Java Game Library
      Lightweight Java Game Library

      The Lightweight Java Game Library is an open source Java software library for computer game developers.LWJGL exposes high performance cross-platform library commonly used in developing software games and multimedia titles....
       (LWJGL)
  • Lisp: See
  • Lua
    Lua

    Lua may refer to:* Lua , a lightweight, extensible programming language* Lua * Lua , the Roman goddess* Lua , a traditional Hawaiian martial art...
    : ,
  • Mercury Prolog mtogl
  • Ocaml
    Objective Caml

    Objective Caml, or OCaml is the main implementation of the Caml programming language, created by Xavier Leroy, J?r?me Vouillon, Damien Doligez, Didier R?my and others in 1996....
    : and
  • Perl
    Perl

    In computer programming, Perl is a high-level programming language, List of programming languages by category, Interpreter , dynamic programming language....
    :
    • Perl OpenGL
      Perl OpenGL

      Perl OpenGL is a portable, compiled wrapper library that allows OpenGL to be used in the Perl .POGL provides support for most OpenGL 2.0 extensions, abstracts OS-specific proc handlers, and supports OpenGL Utility Toolkit, a simple cross-platform windowing interface....
       (POGL) module - shared libs written in C
    • benchmarks
  • Pike: It has a OpenGL native interface. Moreover, it supports GLU and GLUT
  • PHP
    PHP

    PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
    : See http://phpopengl.sourceforge.net/
  • PureBasic
    PureBasic

    PureBasic is a proprietary Event_driven BASIC programming language programming language developed by for Microsoft_Windows, Linux, Mac OS X, and AmigaOS ....
    : Native OpenGL support.
  • Python
    Python (programming language)

    Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive....
    : supports GL, GLU and GLUT
  • R (programming language)
    R (programming language)

    In computing, R is a programming language and software environment for statistics computing and graphics. It is an implementation of the S programming language with lexical scoping semantics inspired by Scheme ....
    :
  • Ruby
    Ruby MRI

    Matz's Ruby Interpreter or Ruby MRI is the reference implementation of the Ruby . As there is currently no specification of the Ruby language, the MRI implementation is considered the de facto reference....
    : - supports GL, GLU and GLUT
  • Scheme:
    • Chicken Scheme has an
    • comes with GL and GLUT bindings out of the box
  • Smalltalk
    Smalltalk

    Smalltalk is an Object-oriented programming, Type system, reflection computer programming programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human?computer symbiosis." It was designed and created in part for educational use, more so for constructionist learning, at PARC by Al...
     as seen in Croquet Project
    Croquet Project

    The Croquet Project is an international effort to promote the continued development of Croquet, a free software Computer software Platform and a Computer network operating system for developing and delivering deeply collaborative multi-user online Application software....
     running on Squeak Smalltalk
  • thinBasic
    ThinBasic

    thinBasic is a BASIC-like computer Computer programming Programming language Interpreter , specifically written for computer automation. As the project continues, it can be used for a wide range of tasks....
     - native interface for OpenGL 2.1, GLU library + language specific higher level module
  • Visual Basic
    Visual Basic

    'Visual Basic' is the third-generation programming language event-driven programming and integrated integrated development environment from Microsoft for its Component Object Model programming model....
    :
  • Visual Prolog
    Visual Prolog

    Visual Prolog, also formerly known as PDC Prolog and Turbo Prolog, is a strongly typed object-oriented extension of Prolog. As Turbo Prolog it was marketed by Borland, but it is now developed and marketed by the Danish firm Prolog Development Center that originally developed it....
     commercial edition


For more information on OpenGL Language bindings, see .

Higher level functionality

OpenGL was designed to be graphic output-only: it provides only rendering
Rendering (computer graphics)

Rendering is the process of generating an image from a 3D model, by means of computer programs. The model is a description of three-dimensional objects in a strictly defined language or data structure....
 functions. The core API has no concept of windowing system
Windowing system

A windowing system is a component of a graphical user interface , and more specifically of a desktop environment, which supports the implementation of window managers, and provides basic support for graphics hardware, pointing devices such as mice, and keyboards....
s, audio, printing to the screen, keyboard/mouse or other input device
Input device

An input device is any peripheral used to provide data and control signals to an information processing system . Input and output devices make up the hardware interface between a computer as a or 6DOF controller....
s. While this seems restrictive at first, it allows the code that does the rendering to be completely independent of the operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
 it is running on, allowing cross-platform development. However, some integration with the native windowing system is required to allow clean interaction with the host system. This is performed through the following add-on APIs:

  • GLX
    GLX

    GLX provides the Binding connecting OpenGL and the X Window System: it enables programs wishing to use OpenGL to do so within a window provided by the X Window System....
     – X11
    X Window System

    The X Window System is a computing software system and network protocol that provides a graphical user interface for networked computers. It implements the X Window System protocols and architecture and provides windowing system on raster graphics Visual display units and manages Keyboard and pointing device control functions....
     (including network transparency
    Network transparency

    Network Transparency in its most general sense refers to the ability of a protocol to transmit data over the network in a manner which is Transparency_%28computing%29 to those using the applications that are using the protocol....
    )
  • WGL
    WiggleWin32

    WGL or Wiggle is the windowing system interface to the Microsoft Windows implementation of the OpenGL specification. WGL is analogous to GLX, which is the X11 interface to OpenGL as well as Core OpenGL, which is the Mac OS X interface to OpenGL....
     – Microsoft Windows
    Microsoft Windows

    Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
  • CGL
    Core OpenGL

    Core OpenGL, or CGL, is Apple Inc.'s Macintosh Quartz windowing system interface to the Mac OS X implementation of the OpenGL specification....
     – Mac OS X
    Mac OS X

    Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
    . Better integration with Mac OS X's application frameworks is provided by APIs layered on top of CGL: AGL
    Apple Graphics Library

    Apple Graphics Library or AGL is the Apple Inc. API for use of OpenGL 3D graphics within Carbon windows. It is layered above Core OpenGL....
     for Carbon
    Carbon (API)

    Carbon is one of Apple Inc.'s procedural Application programming interfaces for the Apple Macintosh operating system. It permits a good degree of forward and backward compatibility between source code written to run on the older and now dated Mac OS history , and the newer Mac OS X....
     and NSOpenGL for Cocoa
    Cocoa (API)

    Cocoa is one of Apple Inc.'s native object-oriented application program environment for the Mac OS X operating system. It is one of four major Application programming interfaces available for Mac OS X; the others are Carbon , POSIX , and Java platform....
    .


Additionally, GLUT
OpenGL Utility Toolkit

The OpenGL Utility widget toolkit is a library of utilities for OpenGL programs, which primarily perform system-level input/output with the host operating system....
, SDL
Simple DirectMedia Layer

Simple DirectMedia Layer is a cross-platform, free and open source software multimedia Library written in C that presents a simple interface to various platforms' computer graphics, sound, and input devices, allowing a developer to write a Personal computer game or other multimedia application that can run on many operating systems includi...
 and the libraries provide functionality for basic windowing using OpenGL, in a portable manner. Some opensource crossplatform toolkits like GTK+
GTK+

GTK+, or The GIMP Toolkit, is a cross-platform widget toolkit for creating graphical user interfaces. It is one of the most popular toolkits for the X Window System, along with Qt ....
, QT
Qt (toolkit)

Qt is a cross-platform application development framework, widely used for the development of graphical user interface programs , and also used for developing non-GUI programs such as console tools and servers....
 and WxWidgets
WxWidgets

wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes....
 include a widget to embed OpenGL contents.

History

In the 1980s, developing software that could function with a wide range of graphics hardware was a real challenge. Software developers wrote custom interfaces and drivers for each piece of hardware. This was expensive and resulted in much duplication of effort.

By the early 1990s, Silicon Graphics
Silicon Graphics

Silicon Graphics, Inc. is a company manufacturer high-performance computing solutions, including computer hardware and computer software. SGI was founded by James H....
 (SGI) was a leader in 3D graphics for workstations. Their IRIS GL
IRIS GL

IRIS GL was a proprietary graphics application programming interface created by Silicon Graphics for producing 2D and 3D computer graphics on their IRIX-based IRIS graphical workstations....
 API was considered the state of the art and became the de facto industry standard, overshadowing the open standards-based PHIGS
PHIGS

PHIGS is an application programming interface standard for rendering 3D computer graphics, at one time considered to be the 3D graphics standard for the 1990s....
. This was because IRIS GL was considered easier to use, and because it supported immediate mode
Immediate mode

Immediate mode rendering is a style for application programming interfaces of graphics libraries, in which client calls directly cause rendering of graphics objects to the display....
 rendering. By contrast, PHIGS
PHIGS

PHIGS is an application programming interface standard for rendering 3D computer graphics, at one time considered to be the 3D graphics standard for the 1990s....
 was considered difficult to use and outdated in terms of functionality.

SGI's competitors (including Sun Microsystems
Sun Microsystems

Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
, Hewlett-Packard
Hewlett-Packard

The Hewlett-Packard Company , commonly referred to as HP, is a technology corporation headquartered in Palo Alto, California, United States....
 and IBM
IBM

International Business Machines Corporation, abbreviated IBM and nicknamed "Big Blue" , is a multinational corporation computer technology and consulting corporation headquartered in Armonk, New York, New York, United States....
) were also able to bring to market 3D hardware, supported by extensions made to the PHIGS
PHIGS

PHIGS is an application programming interface standard for rendering 3D computer graphics, at one time considered to be the 3D graphics standard for the 1990s....
 standard. This in turn caused SGI market share to weaken as more 3D graphics hardware suppliers entered the market. In an effort to influence the market, SGI decided to turn the IrisGL API into an open standard.

SGI considered that the IrisGL API itself wasn't suitable for opening due to licensing and patent issues. Also, the IrisGL had API functions that were not relevant to 3D graphics. For example, it included a windowing, keyboard and mouse API, in part because it was developed before the X Window System
X Window System

The X Window System is a computing software system and network protocol that provides a graphical user interface for networked computers. It implements the X Window System protocols and architecture and provides windowing system on raster graphics Visual display units and manages Keyboard and pointing device control functions....
 and Sun's NeWS
NeWS

NeWS was a windowing system developed by Sun Microsystems in the mid 1980s. Originally known as "SunDew", its primary authors were James Gosling and David S....
 systems were developed.

In addition, SGI had a large number of software customers; by changing to the OpenGL API they planned to keep their customers locked onto SGI (and IBM) hardware for a few years while market support for OpenGL matured. Meanwhile, SGI would continue to try to maintain their customers tied to SGI hardware by developing the advanced and proprietary Iris Inventor
Open Inventor

Open Inventor, originally IRIS Inventor, is a C++ object oriented retained mode 3D graphics API designed by Silicon Graphics to provide a higher layer of programming for OpenGL....
 and Iris Performer programming APIs.

As a result, SGI released the OpenGL standard.

The OpenGL standardised access to hardware, and pushed the development responsibility of hardware interface programs, sometimes called device driver
Device driver

In computing, a device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device....
s, to hardware manufacturers and delegated windowing functions to the underlying operating system. With so many different kinds of graphic hardware, getting them all to speak the same language in this way had a remarkable impact by giving software developers a higher level platform for 3D-software development.

In 1992, SGI led the creation of the OpenGL architectural review board (OpenGL ARB), the group of companies that would maintain and expand the OpenGL specification for years to come. OpenGL evolved from (and is very similar in style to) SGI's earlier 3D interface, IrisGL. One of the restrictions of IrisGL was that it only provided access to features supported by the underlying hardware. If the graphics hardware did not support a feature, then the application could not use it. OpenGL overcame this problem by providing support in software for features unsupported by hardware, allowing applications to use advanced graphics on relatively low-powered systems.

In 1994 SGI played with the idea of releasing something called "OpenGL++
OpenGL++

OpenGL++ was intended to be a powerful layer above the OpenGL 3D graphics system written in C++ that supported object-oriented data structures. The project started as the result of a partnership between Silicon Graphics, IBM and Intel to provide a higher level API than the "bare metal" support of OpenGL, as well as being an implementation fo...
" which included elements such as a scene-graph API (presumably based around their Performer technology). The specification was circulated among a few interested parties – but never turned into a product.

Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 released Direct3D
Direct3D

Direct3D is part of Microsoft's DirectX application programming interface. Direct3D is only available for Microsoft's various Microsoft Windows operating systems and is the base for the graphics API on the Xbox and Xbox 360 console systems....
 in 1995, which would become the main competitor of OpenGL. On 17 December 1997, Microsoft and SGI initiated the Fahrenheit
Fahrenheit graphics API

Fahrenheit was an effort to create a unified high-level API for 3D computer graphics to unify Direct3D and OpenGL. It was designed primarily by Microsoft and Silicon Graphics and also included work from an Hewlett-Packard-MS joint effort....
 project, which was a joint effort with the goal of unifying the OpenGL and Direct3D interfaces (and adding a scene-graph API too). In 1998 Hewlett-Packard joined the project. It initially showed some promise of bringing order to the world of interactive 3D computer graphics APIs, but on account of financial constraints at SGI, strategic reasons at Microsoft, and general lack of industry support, it was abandoned in 1999.

OpenGL 2.0

OpenGL 2.0 was conceived by 3Dlabs
3Dlabs

3DLABS Semiconductor is a fabless semiconductor company that develops the DMS range of fully programmable media-rich application processors targeted at the handheld and embedded markets....
 to address concerns that OpenGL was stagnating and lacked a strong direction. 3Dlabs proposed a number of major additions to the standard. Most of these were, at the time, rejected by the ARB or otherwise never came to fruition in the form that 3Dlabs proposed. However, their proposal for a C
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
-style shading language was eventually completed, resulting in the current formulation of GLSL
GLSL

GLSL , also known as GLslang, is a High level programming language shading language based on the C . It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use assembly language or hardware-specific languages....
 (the OpenGL Shading Language, also slang). Like the assembly-like shading languages that it was replacing, it allowed the programmer to replace the fixed-function vertex and fragment pipe with shaders, though this time written in a C-like language.

The design of GLSL was notable for making relatively few concessions to the limitations of the hardware then available; this hearkened back to the earlier tradition of OpenGL setting an ambitious, forward-looking target for 3D accelerators rather than merely tracking the state of currently available hardware. The final OpenGL 2.0 specification includes support for GLSL.

OpenGL 2.1

OpenGL 2.1 was released on August 2, 2006 and is backward compatible with all prior OpenGL versions. OpenGL 2.1 incorporates the following functionality:
  • OpenGL Shading Language revision 1.20 (GLSL
    GLSL

    GLSL , also known as GLslang, is a High level programming language shading language based on the C . It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use assembly language or hardware-specific languages....
    )
  • Commands to specify and query non-square matrix uniforms for use with the OpenGL Shading Language
  • Pixel buffer objects for efficient image transfers to and from buffer objects for commands such as glTexImage2D and glReadPixels.
    This functionality corresponds to the ARB_pixel_buffer_object extension.
  • sRGB texture formats.
    This functionality corresponds to the EXT_texture_sRGB extension.


OpenGL 3.0

The newest revision of the OpenGL API is OpenGL 3.0, released August 11, 2008 and is backward compatible with all prior OpenGL versions, though a deprecation mechanism has been introduced to simplify the API in future revisions.
  • OpenGL Shading Language revision 1.30 (GLSL
    GLSL

    GLSL , also known as GLslang, is a High level programming language shading language based on the C . It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use assembly language or hardware-specific languages....
    )
  • Vertex Array Objects
  • More flexible Framebuffer Objects
  • 32-bit (single precision) floating-point textures and render buffers
  • 16-bit (half precision) floating-point vertex and pixel data
  • Ability to render vertex transformations into a buffer
  • Texture arrays
  • 32-bit (single precision) floating point depth buffer support


Full use of OpenGL 3.0 requires the same level of hardware as is required for DirectX 10 support. Unlike DirectX 10, OpenGL 3.0 does not require Windows Vista and can be used on any OS for which the appropriate drivers are provided.

Longs Peak and OpenGL 3.0 controversy

Prior to the release of OpenGL 3.0 the new revision was known as the codename Longs Peak
Longs Peak

Longs Peak is one of the 53 "fourteeners" in the Rocky Mountains of Colorado. It can be prominently seen from Longmont, Colorado, Colorado, as well as from the rest of the Colorado Front Range piedmont....
. At the time of its original announcement Longs Peak was presented as the first major API revision in OpenGL's lifetime. It consisted of an overhaul to the way that OpenGL works, calling for fundamental changes to the API.

The draft introduced a change to object management. The GL 2.1 object model was built upon the state-based design of OpenGL. That is, in order to modify an object or to use it, one needs to bind the object to the state system, then make modifications to the state or perform function calls that use the bound object.

Because of OpenGL's use of a state system, objects must be mutable. That is, the basic structure of an object can change at any time, even if the rendering pipeline is asynchronously using that object. A texture object can be redefined from 2D to 3D. This requires any OpenGL implementations to add a degree of complexity to internal object management.

Under the Longs Peak API object creation would become atomic, using templates to define the properties of an object which would be created with a single function call. The object could then be used immediately across multiple threads. Objects would also be immutable; however, they could have their contents changed and updated. For example, a texture could change its image, but its size and format could not be changed.

To support backwards compatibility the old state based API would still be available, but no new functionality would be exposed via the old API in later versions of OpenGL. This would have allowed legacy code bases, such as the majority of CAD products, to continue to run while other software could be written against or ported to the new API.

Longs Peak was initially due to be finalized in September 2007 under the name OpenGL 3.0, but the Khronos group announced October 30 that it had run into several issues that it wished to address before releasing the specification. As a result the spec was delayed, and the Khronos group went into a media blackout until the release of the final OpenGL 3.0 spec.

The final specification proved far less revolutionary than the Longs Peak proposal. Instead of removing all immediate mode and fixed functionality (non-shader mode), the spec included them as deprecated features. The proposed object model was not included, and no plans have been announced to include it in any future revisions. As a result the API remained largely the same with a few existing extensions being promoted to core functionality.

Among some developer groups this decision caused something of an uproar , with many developers professing that they would switch to DirectX
DirectX

Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms....
 in protest. Most complaints revolved around the lack of communication by Khronos to the development community and multiple features being discarded that were viewed favorably by many. Other frustrations included the requirement of DirectX 10 level hardware in order to use OpenGL 3.0 and the absence of geometry shaders and instanced rendering as a core features.

Other sources reported that the community reaction wasn't quite as severe as originally presented , with many vendors showing support for the update.

Post OpenGL 3.0


Prior to the release of OpenGL 3.0 plans were discussed to add more functionality to OpenGL beyond 3.0. However, since much of this discussion took place in the context of a redesigned API, and some of the features planned for the future releases are already in the final 3.0 spec, it is presently unclear what role (if any) the planned extensions will play moving forward.

Longs Peak Reloaded


This revision, which was due to be released 2-3 months after 3.0, would have entailed adding smaller features to 3.0 that could not be added in the timeframe for its release. It was mostly ease-of-use features to make the API more convenient to use, in addition to a few features for performance purposes.

Mt. Evans


This revision, which was due to be released 3-5 months after 3.0, would bring OpenGL 3.0 up-to-date with more modern hardware features. These included geometry shaders, integers in shaders, texture arrays, and instanced rendering. However, it is worth noting that both the use of integers in shaders and texture arrays are already part of the final 3.0 spec.

Sample renderings





See also

  • List of OpenGL programs
    List of OpenGL programs

    This is a non-exhaustive list of popular OpenGL-based programs....
     - list of popular games and applications that use OpenGL
  • ARB (GPU assembly language)
    ARB (GPU assembly language)

    ARB - OpenGL Assembly Language is a low-level shading language. It was created by the OpenGL ARB to standardize GPU instructions controlling the hardware graphics pipeline....
     - OpenGL's low-level shading language
  • Cg – Nvidia's shading language that works with OpenGL
  • GLSL
    GLSL

    GLSL , also known as GLslang, is a High level programming language shading language based on the C . It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use assembly language or hardware-specific languages....
     - Open crossplatform high-level shading language that works with OpenGL
  • OpenCL
    OpenCL

    OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of Central processing unit, Graphics processing unit, and other processors....
     - Open crossplatform GPU general purpose language that works with OpenGL
  • OpenGL ES
    OpenGL ES

    OpenGL ES is a subset of the OpenGL 3D computer graphics Application programming interface designed for embedded devices such as mobile phones, Personal digital assistants, and video game consoles....
     – OpenGL for embedded systems
  • OpenAL
    OpenAL

    OpenAL is a free software cross-platform audio Application programming interface. It is designed for efficient rendering of multichannel three dimensional positional audio....
     – The Open Audio Library – designed to work well with OpenGL.
  • OpenSL ES
    OpenSL ES

    OpenSL ES is a royalty-free, cross-platform, hardware-accelerated, C audio Application programming interface for 2D and 3D audio. It provides access to features such as 3D audio and midi playback....
     – Another audio library.
  • OpenML
    OpenML

    Open Media Library is a free, cross-platform programming environment designed by the Khronos Group for capturing, transporting, processing, displaying, and synchronizing digital media ....
     - The Open Media Library - designed to work well with OpenGL.
  • Graphics pipeline
    Graphics pipeline

    In 3D computer graphics, the terms graphics pipeline or rendering pipeline most commonly refer to the current state of the art method of rasterization-based rendering as supported by commodity graphics hardware....


OpenGL support libraries

  • GLUT
    OpenGL Utility Toolkit

    The OpenGL Utility widget toolkit is a library of utilities for OpenGL programs, which primarily perform system-level input/output with the host operating system....
     – The OpenGL utility toolkit.
  • SDL
    Simple DirectMedia Layer

    Simple DirectMedia Layer is a cross-platform, free and open source software multimedia Library written in C that presents a simple interface to various platforms' computer graphics, sound, and input devices, allowing a developer to write a Personal computer game or other multimedia application that can run on many operating systems includi...
     – The Simple DirectMedia Layer.
  • GLU – Some additional functions for OpenGL programs.
  • GLee - The OpenGL Easy Extension library.
  • GLEW – The OpenGL Extension Wrangler Library.
  • GLUI - a GUI
    Graphical user interface

    A graphical user interface is a type of user interface which allows people to human-computer interaction such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment....
     toolkit made with GLUT
  • GLFW - a portable framework for OpenGL application development.
  • GLM
    OpenGL Mathematics

    GLM is an OpenGL utility library providing to C++ programmer all classes and functions allowing to use data for OpenGL.One GLM characteristic is that GLM implementation is based on GLSL specification....
     - C++ mathematics toolkit for OpenGL based on GLSL specification.
  • SFML - Simple and Fast Multimedia Library.
  • Glux - The OpenGL Utility & Auxiliary Library.


Other 3D graphics APIs

  • Mesa 3D
    Mesa 3D

    Mesa 3D is an Open source software 3D computer graphics Library that provides a generic OpenGL implementation for rendering three-dimensional graphics on multiple platform ....
     – An open source implementation of OpenGL.
  • Direct3D
    Direct3D

    Direct3D is part of Microsoft's DirectX application programming interface. Direct3D is only available for Microsoft's various Microsoft Windows operating systems and is the base for the graphics API on the Xbox and Xbox 360 console systems....
     – A competitor to OpenGL. See Comparison of OpenGL and Direct3D.
  • VirtualGL
    VirtualGL

    VirtualGL is an open source program which redirects the 3D rendering commands from Unix and Linux OpenGL applications to 3D accelerator hardware in a dedicated server and displays the rendered output interactively to a thin client located elsewhere on the network....
     - An OpenGL 3D model server that sends rendered images to a remote X server


Other 2D graphics APIs

  • Cairo (graphics)
    Cairo (graphics)

    cairo is a software library used to provide a vector graphics-based, device-independent Application programming interface for software developers....
     - a cross platform graphical vectorial draw and text toolkit.
  • GTK+
    GTK+

    GTK+, or The GIMP Toolkit, is a cross-platform widget toolkit for creating graphical user interfaces. It is one of the most popular toolkits for the X Window System, along with Qt ....
     - a cross platform graphical widget toolkit.
  • Qt
    Qt (toolkit)

    Qt is a cross-platform application development framework, widely used for the development of graphical user interface programs , and also used for developing non-GUI programs such as console tools and servers....
     - a cross platform graphical widget toolkit.
  • wxWidgets
    WxWidgets

    wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes....
     - a cross platform graphical widget toolkit.
All can incorporate OpenGL 3D objects. Cairo can use OpenGL as backend.

Benchmarks



Further reading

  • Richard S. Wright, Benjamin Lipchak, Nicholas Haemel: OpenGL SuperBible: Comprehensive Tutorial and Reference, 4th Edition, Addison-Wesley, June 18 2007, ISBN 0-321-49882-8
  • Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2.1, 6th Edition, Addison-Wesley, July 30 2007, ISBN 0-321-48100-3
  • Fosner, Ron: OpenGL Programming for Windows 95 and Windows NT, Addison Wesley, ISBN 0-201-40709-4
  • Kilgard, Mark
    Mark Kilgard

    Mark J. Kilgard is a graphics software engineer working at Nvidia.Prior to joining Nvidia, Mark worked at Compaq and Silicon Graphics. While at Silicon Graphics, he authored the OpenGL Utility Toolkit, better known as GLUT, to make it easy to write OpenGL-based 3D examples and demos....
    : OpenGL for the X Window System, Addison-Wesley, ISBN 0-201-48359-9
  • Lengyel, Eric
    Eric Lengyel

    Eric Lengyel is a computer game engine developer with experience in areas including 3D graphics, animation, audio, and networking. He is the author of the textbook Mathematics for 3D Game Programming and Computer Graphics ....
    : The OpenGL Extensions Guide, Charles River Media, ISBN 1-58450-294-0
  • OpenGL Architecture Review Board
    OpenGL Architecture Review Board

    The OpenGL Architecture Review Board is an industry consortium that governed the OpenGL specification.It was formed in 1992, and defined the conformance tests, approved the OpenGL specification and advanced the standard....
    , et al: OpenGL Reference Manual: The Official Reference Document to OpenGL, Version 1.4, Addison-Wesley, ISBN 0-321-17383-X
  • OpenGL Architecture Review Board
    OpenGL Architecture Review Board

    The OpenGL Architecture Review Board is an industry consortium that governed the OpenGL specification.It was formed in 1992, and defined the conformance tests, approved the OpenGL specification and advanced the standard....
    , et al: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2, Fifth Edition, Addison-Wesley, ISBN 0-321-33573-2
  • Rost, Randi J.: OpenGL Shading Language, Addison-Wesley, ISBN 0-321-19789-5


External links

  • on the web
  • Windows and Linux