Open Gl
   HOME

TheInfoList



OR:

OpenGL (Open Graphics Library) is a cross-language, cross-platform
application programming interface An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
(API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.
Silicon Graphics, Inc. Silicon Graphics, Inc. (stylized as SiliconGraphics before 1999, later rebranded SGI, historically known as Silicon Graphics Computer Systems or SGCS) was an American high-performance computing manufacturer, producing computer hardware and soft ...
(SGI) began developing OpenGL in 1991 and released it on June 30, 1992; applications use it extensively in the fields of
computer-aided design Computer-aided design (CAD) is the use of computers (or ) to aid in the creation, modification, analysis, or optimization of a design. This software is used to increase the productivity of the designer, improve the quality of design, improve c ...
(CAD), virtual reality, scientific visualization, information visualization,
flight simulation A flight simulator is a device that artificially re-creates aircraft flight and the environment in which it flies, for pilot training, design, or other purposes. It includes replicating the equations that govern how aircraft fly, how they rea ...
, and video games. Since 2006, OpenGL has been managed by the non-profit technology
consortium A consortium (plural: consortia) is an association of two or more individuals, companies, organizations or governments (or any combination of these entities) with the objective of participating in a common activity or pooling their resources for ...
Khronos Group.


Design

The OpenGL specification describes an abstract API for drawing 2D and 3D graphics. Although it is possible for the API to be implemented entirely in software, it is designed to be implemented mostly or entirely in hardware. The API is defined as a set of functions which may be called by the client program, alongside a set of named integer constants (for example, the constant GL_TEXTURE_2D, which corresponds to the
decimal The decimal numeral system (also called the base-ten positional numeral system and denary or decanary) is the standard system for denoting integer and non-integer numbers. It is the extension to non-integer numbers of the Hindu–Arabic numeral ...
number 3553). Although the function definitions are superficially similar to those of the programming language C, they are language-independent. As such, OpenGL has many language bindings, some of the most noteworthy being the JavaScript binding WebGL (API, based on
OpenGL ES 2.0 OpenGL for Embedded Systems (OpenGL ES or GLES) is a subset of the OpenGL computer graphics rendering application programming interface (API) for rendering 2D and 3D computer graphics such as those used by video games, typically hardware-acce ...
, for 3D rendering from within a web browser); the C bindings WGL, GLX and CGL; the C binding provided by iOS; and the Java and C bindings provided by
Android Android may refer to: Science and technology * Android (robot), a humanoid robot or synthetic organism designed to imitate a human * Android (operating system), Google's mobile operating system ** Bugdroid, a Google mascot sometimes referred to ...
. In addition to being language-independent, OpenGL is also cross-platform. The specification says nothing on the subject of obtaining and managing an OpenGL context, leaving this as a detail of the underlying windowing system. For the same reason, OpenGL is purely concerned with rendering, providing no APIs related to input, audio, or windowing.


Development

OpenGL is no longer in active development: whereas between 2001 and 2014 OpenGL specification was updated mostly on a yearly basis, with two releases (3.1 and 3.2) taking place in 2009 and three (3.3, 4.0 and 4.1) in 2010, the latest OpenGL specification 4.6 was released in 2017 after a three-year break and was limited to inclusion of eleven existing ARB and EXT extensions into the core profile. Active development of OpenGL was dropped in favor of Vulkan API released in 2016 and codenamed glNext during initial development. In 2017, Khronos Group announced that OpenGL ES will not have new versions and has since concentrated on development of Vulkan and other technologies. As a result, certain capabilities offered by modern GPUs, e.g. ray tracing, are not supported by OpenGL. New versions of the OpenGL specifications are released by the Khronos Group, each of which extends the API to support various new features. The details of each version are decided by consensus between the Group's members, including graphics card manufacturers, operating system designers, and general technology companies such as Mozilla and Google. In addition to the features required by the core API, graphics processing unit (GPU) vendors may provide additional functionality in the form of ''extensions''. Extensions may introduce new functions and new constants, and may relax or remove restrictions on existing OpenGL functions. Vendors can use extensions to expose custom APIs without needing support from other vendors or the Khronos Group as a whole, which greatly increases the flexibility of OpenGL. All extensions are collected in, and defined by, the OpenGL Registry. Each extension is associated with a short identifier, based on the name of the company which developed it. For example, Nvidia's identifier is NV, which is part of the extension name GL_NV_half_float, the constant GL_HALF_FLOAT_NV, and the function glVertex2hNV(). If multiple vendors agree to implement the same functionality using the same API, a shared extension may be released, using the identifier EXT. In such cases, it could also happen that the Khronos Group's Architecture Review Board gives the extension their explicit approval, in which case the identifier ARB is used. The features introduced by each new version of OpenGL are typically formed from the combined features of several widely implemented extensions, especially extensions of type ARB or EXT.


Documentation

The OpenGL Architecture Review Board released a series of manuals along with the specification which have been updated to track changes in the API. These are commonly referred to by the colors of their covers: ;The Red Book :OpenGL Programming Guide, 9th Edition. :The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V ;The Orange Book :OpenGL Shading Language, 3rd edition. :A tutorial and reference book for GLSL. Historic books (pre-OpenGL 2.0): ;The Green Book :OpenGL Programming for the X Window System. :A book about X11 interfacing and OpenGL Utility Toolkit (GLUT). ;The Blue Book :OpenGL Reference manual, 4th edition. :Essentially a hard-copy printout of the
Unix manual A man page (short for manual page) is a form of software documentation usually found on a Unix or Unix-like operating system. Topics covered include computer programs (including library and system calls), formal standards and conventions, and ev ...
(man) pages for OpenGL. :Includes a poster-sized fold-out diagram showing the structure of an idealised OpenGL implementation. ;The Alpha Book (white cover) :OpenGL Programming for Windows 95 and Windows NT. :A book about interfacing OpenGL with Microsoft Windows. OpenGL's documentation is also accessible via its official webpage.


Associated libraries

The earliest versions of OpenGL were released with a companion library called the OpenGL Utility Library (GLU). It provided simple, useful features which were unlikely to be supported in contemporary hardware, such as tessellating, and generating mipmaps and primitive shapes. The GLU specification was last updated in 1998 and depends on OpenGL features which are now deprecated.


Context and window toolkits

Given that creating an OpenGL context is quite a complex process, and given that it varies between operating systems, automatic OpenGL context creation has become a common feature of several game-development and user-interface libraries, including SDL,
Allegro Allegro may refer to: Common meanings * Allegro (music), a tempo marking indicate to play fast, quickly and bright * Allegro (ballet), brisk and lively movement Artistic works * L'Allegro (1645), a poem by John Milton * ''Allegro'' (Satie), an ...
, SFML, FLTK, and Qt. A few libraries have been designed solely to produce an OpenGL-capable window. The first such library was OpenGL Utility Toolkit (GLUT), later superseded by freeglut.
GLFW GLFW (Graphics Library Framework) is a lightweight utility library for use with OpenGL. It provides programmers with the ability to create and manage windows and OpenGL contexts, as well as handle joystick, keyboard and mouse input. Software ar ...
is a newer alternative. * These toolkits are designed to create and manage OpenGL windows, and manage input, but little beyond that. :*
GLFW GLFW (Graphics Library Framework) is a lightweight utility library for use with OpenGL. It provides programmers with the ability to create and manage windows and OpenGL contexts, as well as handle joystick, keyboard and mouse input. Software ar ...
– A cross-platform windowing and keyboard-mouse-joystick handler; is more game-oriented :* freeglut – A cross-platform windowing and keyboard-mouse handler; its API is a superset of the GLUT API, and it is more stable and up to date than GLUT :* OpenGL Utility Toolkit (GLUT) – An old windowing handler, no longer maintained. * Several "multimedia libraries" can create OpenGL windows, in addition to input, sound and other tasks useful for game-like applications :* Allegro 5 – A cross-platform multimedia library with a C API focused on game development :* Simple DirectMedia Layer (SDL) – A cross-platform multimedia library with a C API :* SFML – A cross-platform multimedia library with a C++ API and multiple other bindings to languages such as C#, Java, Haskell, and Go * Widget toolkits :* FLTK – A small cross-platform C++ widget library :* Qt – A cross-platform C++ widget toolkit. It provides many OpenGL helper objects, which even abstract away the difference between desktop GL and OpenGL ES :* wxWidgets – A cross-platform C++ widget toolkit


Extension loading libraries

Given the high workload involved in identifying and loading OpenGL extensions, a few libraries have been designed which load all available extensions and functions automatically. Examples include OpenGL Easy Extension library (GLEE), OpenGL Extension Wrangler Library (GLEW) and
glbinding glbinding is a generated, cross-platform C++ binding for OpenGL which is solely based on the new XML-based OpenGL API specification (). It is a fully fledged OpenGL API binding, compatible with current code based on other C bindings, e.g., GLEW. ...
. Extensions are also loaded automatically by most language bindings, such as JOGL and PyOpenGL.


Implementations

Mesa 3D is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
implementation of OpenGL. It can do pure software rendering, and it may also use hardware acceleration on
BSD The Berkeley Software Distribution or Berkeley Standard Distribution (BSD) is a discontinued operating system based on Research Unix, developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berk ...
, Linux, and other platforms by taking advantage of the Direct Rendering Infrastructure. As of version 20.0, it implements version 4.6 of the OpenGL standard.


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 multiplication of effort. By the early 1990s, Silicon Graphics (SGI) was a leader in 3D graphics for workstations. Their IRIS GL API became the industry standard, used more widely than the open standards-based PHIGS. This was because IRIS GL was considered easier to use, and because it supported immediate mode rendering. By contrast, PHIGS was considered difficult to use and outdated in functionality. SGI's competitors (including
Sun Microsystems Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, the ...
,
Hewlett-Packard The Hewlett-Packard Company, commonly shortened to Hewlett-Packard ( ) or HP, was an American multinational information technology company headquartered in Palo Alto, California. HP developed and provided a wide variety of hardware components ...
and IBM) were also able to bring to market 3D hardware supported by extensions made to the PHIGS standard, which pressured SGI to open source a version of IRIS GL as a public standard called OpenGL. However, SGI had many customers for whom the change from IRIS GL to OpenGL would demand significant investment. Moreover, IRIS GL had API functions that were irrelevant to 3D graphics. For example, it included a windowing, keyboard and mouse API, in part because it was developed before the X Window System and Sun's
NeWS News is information about current events. This may be provided through many different Media (communication), media: word of mouth, printing, Mail, postal systems, broadcasting, Telecommunications, electronic communication, or through the tes ...
. And, IRIS GL libraries were unsuitable for opening due to licensing and patent issues. These factors required SGI to continue to support the advanced and proprietary
Iris Inventor Open Inventor, originally IRIS Inventor, is a C++ object-oriented retained mode 3D graphics toolkit designed by SGI to provide a higher layer of programming for OpenGL. Its main goals are better programmer convenience and efficiency. Open Inven ...
and Iris Performer programming APIs while market support for OpenGL matured. One of the restrictions of IRIS GL was that it only provided access to features supported by the underlying hardware. If the graphics hardware did not support a feature natively, then the application could not use it. OpenGL overcame this problem by providing software implementations of features unsupported by hardware, allowing applications to use advanced graphics on relatively low-powered systems. OpenGL standardized access to hardware, pushed the development responsibility of hardware interface programs (
device driver In computing, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabling operating systems and ot ...
s) to hardware manufacturers, and delegated windowing functions to the underlying operating system. With so many different kinds of graphics 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 Architecture Review Board (OpenGL ARB), the group of companies that would maintain and expand the OpenGL specification in the future. In 1994, SGI played with the idea of releasing something called " OpenGL++" which included elements such as a scene-graph API (presumably based on their Performer technology). The specification was circulated among a few interested parties – but never turned into a product. In 1996, Microsoft released
Direct3D Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware a ...
, which eventually became the main competitor of OpenGL. Over 50 game developers signed an open letter to Microsoft, released on June 12, 1997, calling on the company to actively support OpenGL. On December 17, 1997, Microsoft and SGI initiated the Fahrenheit 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 a general lack of industry support, it was abandoned in 1999. In July 2006, the OpenGL Architecture Review Board voted to transfer control of the OpenGL API standard to the Khronos Group.


Version history

The first version of OpenGL, version 1.0, was released on June 30, 1992, by Mark Segal and Kurt Akeley. Since then, OpenGL has occasionally been extended by releasing a new version of the specification. Such releases define a baseline set of features which all conforming graphics cards must support, and against which new extensions can more easily be written. Each new version of OpenGL tends to incorporate several extensions which have widespread support among graphics-card vendors, although the details of those extensions may be changed.


OpenGL 2.0

''Release date'': September 7, 2004 OpenGL 2.0 was originally conceived by
3Dlabs 3Dlabs was a fabless semiconductor company. It was founded in 1994 with headquarters in San Jose, California. It originally developed the GLINT and PERMEDIA high-end graphics chip technology, that was used on many of the world's leading computer g ...
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-style shading language was eventually completed, resulting in the current formulation of the OpenGL Shading Language ( GLSL or GLslang). Like the assembly-like shading languages it was replacing, it allowed replacing the fixed-function vertex and fragment pipe with shaders, though this time written in a C-like high-level language. The design of GLSL was notable for making relatively few concessions to the limits of the hardware then available. This harked 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.


Longs Peak and OpenGL 3.0

Before the release of OpenGL 3.0, the new revision had the codename Longs Peak. 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, 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 one 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 Computer-aided design (CAD) is the use of computers (or ) to aid in the creation, modification, analysis, or optimization of a design. This software is used to increase the productivity of the designer, improve the quality of design, improve co ...
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 on 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 Microsoft DirectX is a collection of application programming interfaces (APIs) for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with "Direct", ...
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 to use OpenGL 3.0 and the absence of geometry shaders and instanced rendering as core features. Other sources reported that the community reaction was not quite as severe as originally presented, with many vendors showing support for the update.


OpenGL 3.0

''Release date'': August 11, 2008 OpenGL 3.0 introduced a deprecation mechanism to simplify future revisions of the API. Certain features, marked as deprecated, could be completely disabled by requesting a ''forward-compatible context'' from the windowing system. OpenGL 3.0 features could still be accessed alongside these deprecated features, however, by requesting a ''full context''. Deprecated features include: *All fixed-function vertex and fragment processing *Direct-mode rendering, using glBegin and glEnd *Display lists *Indexed-color rendering targets *
OpenGL Shading Language OpenGL Shading Language (GLSL) is a high-level shading language with a syntax based on the C programming language. It was created by the OpenGL ARB (OpenGL Architecture Review Board) to give developers more direct control of the graphics pipelin ...
versions 1.10 and 1.20


OpenGL 3.1

''Release date'': March 24, 2009 OpenGL 3.1 fully removed all of the features which were deprecated in version 3.0, with the exception of wide lines. From this version onwards, it's not possible to access new features using a ''full context'', or to access deprecated features using a ''forward-compatible context''. An exception to the former rule is made if the implementation supports th
ARB_compatibility
extension, but this is not guaranteed. Hardware: Mesa supports ARM Panfrost with Version 21.0.


OpenGL 3.2

''Release date'': August 3, 2009 OpenGL 3.2 further built on the deprecation mechanisms introduced by OpenGL 3.0, by dividing the specification into a ''core profile'' and ''compatibility profile''. Compatibility contexts include the previously-removed fixed-function APIs, equivalent to the ARB_compatibility extension released alongside OpenGL 3.1, while core contexts do not. OpenGL 3.2 also included an upgrade to GLSL version 1.50.


OpenGL 3.3

''Release date:'' March 11, 2010 Mesa supports software Driver SWR, softpipe and for older Nvidia cards with NV50.


OpenGL 4.0

''Release date'': March 11, 2010 OpenGL 4.0 was released alongside version 3.3. It was designed for hardware able to support Direct3D 11. As in OpenGL 3.0, this version of OpenGL contains a high number of fairly inconsequential extensions, designed to thoroughly expose the abilities of Direct3D 11-class hardware. Only the most influential extensions are listed below. Hardware support: Nvidia GeForce 400 series and newer, AMD Radeon HD 5000 Series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), Intel HD Graphics in Intel Ivy Bridge processors and newer.


OpenGL 4.1

''Release date'': July 26, 2010 Hardware support: Nvidia GeForce 400 series and newer, AMD Radeon HD 5000 Series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), Intel HD Graphics in Intel Ivy Bridge processors and newer. * Minimum "maximum texture size" is 16,384 × 16,384 for GPU's implementing this specification.


OpenGL 4.2

''Release date:'' August 8, 2011 * Support for shaders with atomic counters and load-store-atomic read-modify-write operations to one level of a texture * Drawing multiple instances of data captured from GPU vertex processing (including tessellation), to enable complex objects to be efficiently repositioned and replicated * Support for modifying an arbitrary subset of a compressed texture, without having to re-download the whole texture to the GPU for significant performance improvements Hardware support: Nvidia GeForce 400 series and newer, AMD Radeon HD 5000 Series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), and Intel HD Graphics in Intel Haswell processors and newer. (Linux Mesa: Ivy Bridge and newer)


OpenGL 4.3

''Release date:'' August 6, 2012 *
Compute shader In computing, a compute kernel is a routine compiled for high throughput accelerators (such as graphics processing units (GPUs), digital signal processors (DSPs) or field-programmable gate arrays (FPGAs)), separate from but used by a main progr ...
s leveraging GPU parallelism within the context of the graphics pipeline * Shader storage buffer objects, allowing shaders to read and write buffer objects like image load/store from 4.2, but through the language rather than function calls. * Image format parameter queries * ETC2/EAC texture compression as a standard feature * Full compatibility with OpenGL ES 3.0 APIs * Debug abilities to receive debugging messages during application development * Texture views to interpret textures in different ways without data replication * Increased memory security and multi-application robustness Hardware support: AMD Radeon HD 5000 Series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), Intel HD Graphics in Intel Haswell processors and newer. (Linux Mesa: Ivy Bridge without stencil texturing, Haswell and newer), Nvidia GeForce 400 series and newer. VIRGL Emulation for virtual machines supports 4.3+ with Mesa 20.


OpenGL 4.4

''Release date:'' July 22, 2013 * Enforced buffer object usage controls * Asynchronous queries into buffer objects * Expression of more layout controls of interface variables in shaders * Efficient binding of multiple objects simultaneously Hardware support: AMD Radeon HD 5000 Series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), Intel HD Graphics in Intel Broadwell processors and newer (Linux Mesa: Haswell and newer), Nvidia GeForce 400 series and newer,
Tegra K1 Tegra is a system on a chip (SoC) series developed by Nvidia for mobile devices such as smartphones, personal digital assistants, and mobile Internet devices. The Tegra integrates an ARM architecture central processing unit (CPU), graphics proc ...
.


OpenGL 4.5

''Release date:'' August 11, 2014 * Direct State Access (DSA) – object accessors enable state to be queried and modified without binding objects to contexts, for increased application and middleware efficiency and flexibility. * Flush Control – applications can control flushing of pending commands before context switching – enabling high-performance multithreaded applications; * Robustness – providing a secure platform for applications such as WebGL browsers, including preventing a GPU reset affecting any other running applications; * OpenGL ES 3.1 API and shader compatibility – to enable the easy development and execution of the latest OpenGL ES applications on desktop systems. Hardware support: AMD Radeon HD 5000 Series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), Intel HD Graphics in Intel Broadwell processors and newer (Linux Mesa: Haswell and newer), Nvidia GeForce 400 series and newer,
Tegra K1 Tegra is a system on a chip (SoC) series developed by Nvidia for mobile devices such as smartphones, personal digital assistants, and mobile Internet devices. The Tegra integrates an ARM architecture central processing unit (CPU), graphics proc ...
, and Tegra X1.


OpenGL 4.6

''Release date:'' July 31, 2017 * more efficient, GPU-sided, geometry processing * more efficient shader execution ( ) * more information through statistics, overflow query and counters * higher performance through no error handling contexts *
clamping A wheel clamp, also known as wheel boot, parking boot, or Denver boot, is a device that is designed to prevent motor vehicles from being moved. In its most common form, it consists of a clamp that surrounds a vehicle wheel, designed to preven ...
of polygon offset function, solves a shadow rendering problem *
SPIR-V Standard Portable Intermediate Representation (SPIR) is an intermediate language for parallel compute and graphics by Khronos Group. It is used in multiple execution environments, including the Vulkan graphics API and the OpenCL compute API, to re ...
shaders * Improved anisotropic filtering Hardware support: AMD Radeon HD 7000 Series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), Intel Haswell and newer, Nvidia GeForce 400 series and newer. Driver support: * Mesa 19.2 on Linux supports OpenGL 4.6 for Intel Broadwell and newer. Mesa 20.0 supports AMD Radeon GPUs, while support for Nvidia Kepler+ is in progress. Zink as Emulation Driver with 21.1 and software driver LLVMpipe also support with Mesa 21.0. * AMD Adrenalin 18.4.1 Graphics Driver on Windows 7 SP1, 10 version 1803 (April 2018 update) for AMD Radeon™ HD 7700+, HD 8500+ and newer. Released April 2018. * Intel 26.20.100.6861 graphics driver on Windows 10. Released May 2019. * NVIDIA GeForce 397.31 Graphics Driver on Windows 7, 8, 10 x86-64 bit only, no
32-bit In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in 32-bit units. Compared to smaller bit widths, 32-bit computers can perform large calculation ...
support. Released April 2018


Alternative implementations

Apple deprecated OpenGL in iOS 12 and macOS 10.14 Mojave in favor of Metal, but it is still available as of macOS 13 Ventura (including Apple silicon devices). The latest version supported for OpenGL is 4.1 from 2011. A proprietary library from Molten – authors of MoltenVK – called MoltenGL, can translate OpenGL calls to Metal. There are several projects which attempt to implement OpenGL on top of Vulkan. The Vulkan backend for Google's ANGLE achieved OpenGL ES 3.1 conformance in July 2020. The Mesa3D project also includes such a driver, called ''Zink''.


The future of OpenGL

In June 2018, Apple deprecated OpenGL APIs on all of their platforms ( iOS, macOS and tvOS), strongly encouraging developers to use their proprietary
Metal API Metal is a low-level, low-overhead hardware-accelerated 3D graphic and compute shader API created by Apple. It debuted in iOS 8. Metal combines functions similar to OpenGL and OpenCL in one API. It is intended to improve performance by offering ...
, which was introduced in 2014.
Stadia Stadia may refer to: * One of the plurals of stadium, along with "stadiums" * The plural of stadion, an ancient Greek unit of distance, which equals to 600 Greek feet (''podes''). * Stadia (Caria), a town of ancient Caria, now in Turkey * Stadi ...
and the Google operating system Fuchsia only support Vulkan. In 2016, id Software released an update for the
id Tech 6 id Tech 6 is a multiplatform game engine developed by id Software. It is the successor to id Tech 5 and was first used to create the 2016 video game ''Doom''. Internally, the development team also used the codename ''id Tech 666'' to refer to th ...
game engine that added support for Vulkan, while retaining support for OpenGL.
ID Tech 7 id Tech 7 is a multiplatform proprietary software, proprietary game engine developed by id Software. As part of the id Tech series of game engines, it is the successor to id Tech 6. The software was first demonstrated at QuakeCon 2018 as part of ...
eliminated support for OpenGL. On September 17, 2021 Valve announced that it would be removing OpenGL from
Dota 2 ''Dota 2'' is a 2013 multiplayer online battle arena (MOBA) video game by Valve. The game is a sequel to ''Defense of the Ancients'' (''DotA''), a community-created mod for Blizzard Entertainment's '' Warcraft III: Reign of Chaos.'' ''Dota 2' ...
in a future update. Atypical Games, with support from Samsung, updated their game engine to use Vulkan, rather than OpenGL, across all non-Apple platforms. OpenGL doesn't support Ray Tracing, API for video decoding on GPU in comparison of Vulkan Mesh Shaders supports only for nVidia OpenGL doesn't support anti-aliasing's algorithm with
deep learning Deep learning (also known as deep structured learning) is part of a broader family of machine learning methods based on artificial neural networks with representation learning. Learning can be supervised, semi-supervised or unsupervised. De ...
AMD FidelityFX Super Resolution(FSR) and Nvidia DLSS


Vulkan

Vulkan, formerly named the "Next Generation OpenGL Initiative" (glNext), is a grounds-up redesign effort to unify OpenGL and OpenGL ES into one common API that will not be backwards compatible with existing OpenGL versions. The initial version of Vulkan API was released on February 16, 2016.


See also

*
ARB assembly language ARB assembly language is a low-level shading language, which can be characterized as an assembly language. It was created by the OpenGL Architecture Review Board (ARB) to standardize GPU instructions controlling the hardware graphics pipeline. Hi ...
– OpenGL's legacy low-level shading language *
Comparison of OpenGL and Direct3D Direct3D and OpenGL are competing application programming interfaces (APIs) which can be used in applications to render 2D and 3D computer graphics. , graphics processing units (GPUs) almost always implement one version of both of these APIs. Exa ...
*
Direct3D Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware a ...
– main competitor of OpenGL * Glide (API) – a graphics API once used on 3dfx Voodoo cards *
List of OpenGL applications This is a non-exhaustive list of popular OpenGL programs. Many programs that use OpenGL are games. Games developed in OpenGL * Ballenger, a Platformer * Cube 2: Sauerbraten, an open source 3D FPS and also a game engine * Doom (2016 video game) ...
*
Metal (API) Metal is a low-level, low-overhead hardware-accelerated 3D graphic and compute shader API created by Apple. It debuted in iOS 8. Metal combines functions similar to OpenGL and OpenCL in one API. It is intended to improve performance by offering ...
– a graphics API for iOS, macOS, tvOS, watchOS *
OpenAL OpenAL (Open Audio Library) is a cross-platform audio application programming interface (API). It is designed for efficient rendering of multichannel three-dimensional positional audio. Its API style and conventions deliberately resemble those ...
– cross-platform audio library, designed to resemble OpenGL * OpenGL ES – OpenGL for embedded systems *
OpenSL ES OpenSL ES (Open Sound Library for Embedded Systems) is a royalty-free, cross-platform, hardware-accelerated, C-language audio API for 2D and 3D audio. It provides access to features such as 3D positional audio and MIDI playback. It is made f ...
– API for audio on embedded systems, developed by the Khronos Group * OpenVG – API for accelerated 2D graphics, developed by the Khronos Group * RenderMan Interface Specification (RISpec) – Pixar's open API for photorealistic off-line rendering * VOGL – a debugger for OpenGL * Vulkan – low-overhead, cross-platform 2D and 3D graphics API, the "next generation OpenGL initiative" *
Graphics pipeline In computer graphics, a computer graphics pipeline, rendering pipeline or simply graphics pipeline, is a conceptual model that describes what steps a graphics system needs to perform to Rendering (computer graphics), render a ...
*
WebGPU WebGPU is the working name for a future web standard and JavaScript API for accelerated graphics and compute, aiming to provide "modern 3D graphics and computation capabilities". It is developed by the W3C ''GPU for the Web'' Community Group wi ...


References


Further reading

* * * * * *


External links

*
OpenGL Overview
an
OpenGL.org's Wiki
with more information on OpenGL Language bindings
SGI's OpenGL website
*
Khronos Group, Inc.
{{Khronos Group standards 1992 software 3D graphics APIs Application programming interfaces Cross-platform software Graphics libraries Graphics standards Video game development Video game development software Virtual reality