Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
OpenGL
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Design== [[File:Pipeline OpenGL.svg|thumb|An illustration of the graphics pipeline process]] The OpenGL specification describes an abstract [[application programming interface|application programming interface (API)]] for drawing 2D and 3D graphics. It is designed to be implemented mostly or entirely using [[hardware acceleration]] such as a [[GPU]], although it is possible for the API to be implemented entirely in software running on a [[CPU]]. The API is defined as a set of [[Subroutine|functions]] which may be called by the client program, alongside a set of [[Enumerated type|named integer constants]] (for example, the constant GL_TEXTURE_2D, which corresponds to the [[decimal]] number 3553). Although the function definitions are superficially similar to those of the programming language [[C (programming language)|C]], they are language-independent. As such, OpenGL has many [[language binding]]s, some of the most noteworthy being the [[JavaScript]] binding [[WebGL]] (API, based on [[OpenGL ES 2.0]], for 3D rendering from within a [[web browser]]); the C bindings [[WGL (software)|WGL]], [[GLX]] and [[Core OpenGL|CGL]]; the C binding provided by [[iOS]]; and the [[Java (programming language)|Java]] and C bindings provided by [[Android (operating system)|Android]]. 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{{efn|name=extension identifiers| ARB and EXT are OpenGL extension identifiers. Each extension is associated with a short identifier based on the name of the company which developed it, e.g. <i>NV</i> for [[Nvidia]]. 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.<ref>{{cite web|url=https://khronos.org/registry/OpenGL/docs/rules.html |title=How to Create Khronos API Extensions |publisher=Khronos Group |access-date=July 31, 2017}}</ref> }} extensions into the core profile.<ref name="khronos 4.6-2017" /> Active development of OpenGL was dropped in favor of the [[Vulkan]] API, released in 2016, and codenamed glNext during initial development. In 2017, [[Khronos Group]] announced that OpenGL ES would not have new versions<ref>{{cite web|title=Vulkan, OpenGL, and OpenGL ES SIGGRAPH 2017: No plan for new core version for OpenGL ES|url=https://www.khronos.org/assets/uploads/developers/library/2017-siggraph/06_3D-BOF-SIGGRAPH_Aug17.pdf |website=Khronos Group|date=2017}}</ref> <ref>{{cite web|title=The Future of OpenGL (forum discussion)|url=https://community.khronos.org/t/the-future-of-opengl/106317|website=Khronos Group|date=2020}}</ref> and has since concentrated on development of Vulkan and other technologies.<ref>{{cite web|title=Khronos News Archives|url=https://www.khronos.org/news/archives|website=Khronos Group|date=November 28, 2022 }}</ref><ref>{{cite web|title=Khronos Blog|url=https://www.khronos.org/blog/|website=Khronos Group|date=November 28, 2022 }}</ref> As a result, certain capabilities offered by modern GPUs, e.g. [[ray tracing (graphics)|ray tracing]], are not supported by the OpenGL standard. However, support for newer features might be provided through the vendor-specific OpenGL extensions.<ref>{{cite web|title=GLSL_NV_ray_tracing|website=[[GitHub]] |url=https://github.com/KhronosGroup/GLSL/blob/main/extensions/nv/GLSL_NV_ray_tracing.txt}}</ref><ref>{{cite web|title=GL_NV_mesh_shader|website=[[GitHub]] |url=https://github.com/KhronosGroup/OpenGL-Registry/blob/main/extensions/NV/NV_mesh_shader.txt}}</ref> 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]].<ref>{{cite web|url=http://www.khronos.org/members/ |title=Khronos Membership Overview and FAQ |publisher=Khronos.org |access-date=November 7, 2012}}</ref> 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.<ref name="OpenGLRegistryRoot">{{cite web|url=https://khronos.org/registry/OpenGL/index_gl.php |title=Khronos OpenGL Registry |publisher=Khronos Group |access-date=July 31, 2017}}</ref> 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.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)