Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

OpenGL

From Wikipedia, the free encyclopedia
Cross-platform graphics API
Not to be confused withOpenCL.

OpenGL
A diagram of howvideo games onLinux outsource real-time rendering calculations to aGPU using OpenGL.
Original authorSilicon Graphics
DevelopersKhronos Group
(formerlyARB)
Initial releaseJune 30, 1992; 33 years ago (1992-06-30)
Stable release
4.6[1] Edit this on Wikidata / 31 July 2017; 8 years ago (31 July 2017)
Written inC[2]
SuccessorVulkan
Type3D graphicsAPI
License
  • Open source license for use of the Sample Implementation (SI): This is a Free Software License B closely modeled on BSD, X, and Mozilla licenses.
  • Trademark license for new licensees who want to use the OpenGL trademark and logo and claim conformance.[3]
Websiteopengl.org

OpenGL (Open Graphics Library[4]) is across-language,cross-platformapplication programming interface (API) for rendering2D and3Dvector graphics. The API is typically used to interact with agraphics processing unit (GPU), to achievehardware-acceleratedrendering.

Silicon Graphics, Inc. (SGI) began developing OpenGL in 1991 and released it on June 30, 1992.[5][6] It is used for a variety of applications, includingcomputer-aided design (CAD),video games,scientific visualization,virtual reality, andflight simulation. Since 2006, OpenGL has been managed by thenon-profit technologyconsortiumKhronos Group.[7]

Design

[edit]
An illustration of the graphics pipeline process

The OpenGL specification describes an abstractapplication programming interface (API) for drawing 2D and 3D graphics. It is designed to be implemented mostly or entirely usinghardware acceleration such as aGPU, although it is possible for the API to be implemented entirely in software running on aCPU.

The API is defined as a set offunctions which may be called by the client program, alongside a set ofnamed integer constants (for example, the constant GL_TEXTURE_2D, which corresponds to thedecimal number 3553). Although the function definitions are superficially similar to those of the programming languageC, they are language-independent. As such, OpenGL has manylanguage bindings, some of the most noteworthy being theJavaScript bindingWebGL (API, based onOpenGL ES 2.0, for 3D rendering from within aweb browser); the C bindingsWGL,GLX andCGL; the C binding provided byiOS; and theJava and C bindings provided byAndroid.

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 underlyingwindowing system. For the same reason, OpenGL is purely concerned with rendering, providing no APIs related to input, audio, or windowing.

Development

[edit]

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 asMozilla andGoogle.[8]

In addition to the features required by the core API,graphics processing unit (GPU) vendors may provide additional functionality in the form ofextensions. 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.[9]

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.[citation needed]

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[a] extensions into the core profile.[11]

Active development of OpenGL was dropped in favor of theVulkan API, released in 2016, and codenamed glNext during initial development. In 2017,Khronos Group announced that OpenGL ES would not have new versions[12][13] and has since concentrated on development of Vulkan and other technologies.[14][15] As a result, certain capabilities offered by modern GPUs, e.g.ray tracing, are not supported by the OpenGL standard. However, support for newer features might be provided through the vendor-specific OpenGL extensions.[16][17]

Documentation

[edit]

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.ISBN 978-0-134-49549-1
The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V
The Orange Book
OpenGL Shading Language, 3rd edition.ISBN 0-321-63763-1
A tutorial and reference book forGLSL.

Historic books (pre-OpenGL 2.0):

The Green Book
OpenGL Programming for the X Window System.ISBN 978-0-201-48359-8
A book about X11 interfacing andOpenGL Utility Toolkit (GLUT).
The Blue Book
OpenGL Reference manual, 4th edition.ISBN 0-321-17383-X
Essentially a hard-copy printout of theUnix manual (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.ISBN 0-201-40709-4
A book about interfacing OpenGL with Microsoft Windows.

OpenGL's documentation is also accessible via its official webpage.[18]

Associated libraries

[edit]

The earliest versions of OpenGL were released with a companion library called theOpenGL Utility Library (GLU). It provided simple, useful features which were unlikely to be supported in contemporary hardware, such astessellating, and generatingmipmaps andprimitive shapes. The GLU specification was last updated in 1998 and depends on OpenGL features which are nowdeprecated.

Context and window toolkits

[edit]

Given that creating an OpenGL context is quite a complex process, and given that it varies betweenoperating systems, automatic OpenGL context creation has become a common feature of several game-development and user-interfacelibraries, includingSDL,Allegro,SFML,FLTK, andQt. A few libraries have been designed solely to produce an OpenGL-capable window. The first such library wasOpenGL Utility Toolkit (GLUT), later superseded byfreeglut.GLFW is a newer alternative.[19]

  • These toolkits are designed to create and manage OpenGL windows, and manage input, but little beyond that.[20]
  • GLFW – 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

[edit]

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) andglbinding. Extensions are also loaded automatically by most language bindings, such asJava OpenGL, PyOpenGL andWebGL.[citation needed]

Implementations

[edit]
Screenshot ofglxinfo, showing information of Mesa implementation of OpenGL on a system andglxgears, a program to test OpenGL implementation on a system

Mesa 3D is anopen-source implementation of OpenGL. It can do pure software rendering, and it may also use hardware acceleration onBSD,Linux, and other platforms by taking advantage of theDirect Rendering Infrastructure. As of version 20.0, it implements version 4.6 of the OpenGL standard.[citation needed]

History

[edit]

In the 1980s, developing software that could function with a wide range of graphics hardware was a challenge without a cross-platform library. Software developers wrote custom interfaces and drivers for each piece of hardware. This was expensive and resulted in multiplication of effort.[citation needed]

By the early 1990s,Silicon Graphics (SGI) was a leader in 3D graphics for workstations. TheirIRIS GL API[21][22] became the industry standard, as IRIS GL was considered easier to use,[by whom?] and it supportedimmediate mode rendering, therefore being faster[23] than competitors likePHIGS.

SGI's competitors (includingSun Microsystems,Hewlett-Packard andIBM) 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 calledOpenGL.

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 theX Window System and Sun'sNeWS.[24] IRIS GL libraries were heavily tied into SGI's proprietary graphics hardware and could not be open sourced as-is due to hardware patents and trade secrets. These factors required SGI to continue to support the advanced and proprietaryIris Inventor andIris 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 drivers) 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,[25] SGI led the creation of theOpenGL Architecture Review Board (OpenGL ARB), the group of companies that would maintain and expand the OpenGL specification in the future. Two years later, they also played with the idea of releasing something called "OpenGL++" which included elements such as a scene-graph API (presumably based on theirPerformer technology). The specification was circulated among a few interested parties – but never turned into a product.[26]

Released in 1996,Microsoft'sDirect3D eventually became the main competitor of OpenGL. Over 50 game developers signed anopen letter to Microsoft, released on June 12, 1997, calling on the company to actively support OpenGL.[27] On December 17, 1997,[28] Microsoft and SGI initiated theFahrenheit 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.[29] 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.[30]

In July 2006, the OpenGL Architecture Review Board voted to transfer control of the OpenGL API standard to the Khronos Group.[31][32]

Industry support

[edit]
[icon]
This sectionneeds expansion with: more historical background when support was being added. You can help byadding missing information.(January 2023)

Despite the emergence of newer graphics APIs like its successor Vulkan or Metal, OpenGL continues to be a widely used standard. This continued relevance is supported by several factors: ongoing development with new extensions and driver optimizations, its cross-platform compatibility, and the availability of compatibility layers likeANGLE and Zink. These layers allow OpenGL to run efficiently on top of Vulkan and Metal, offering a pathway for continued use or gradual transitions for developers.[33][34][better source needed]

However, the graphics API landscape has been shifting, where some companies are moving away from OpenGL. Back in June 2018,Apple has deprecated OpenGL APIs on all of their platforms (iOS,macOS andtvOS), strongly encouraging developers to use their proprietaryMetal API, which was introduced in 2014.[35]

Game developers have also begun to adopt newer APIs.id Software, who has been using OpenGL in their games since the late 1990s in games such asGLQuake[36] or some games of theDoom franchise,[37] transitioned away to its successor Vulkan in itsid Tech 7 engine in 2016.[38] They first supported Vulkan in an update for theirid Tech 6 engine. The company's first licensed use of OpenGL was in itsQuake II engine, also known asid Tech 2.[39] In March 2023,Valve removed OpenGL support fromDota 2 in favor of Vulkan.[40] Atypical Games, with support from Samsung, updated their game engine to use Vulkan, rather than OpenGL, across all non-Apple platforms.[41]

TheKhronos Group, the consortium responsible for OpenGL's development, has stopped updating OpenGL with the last release made in 2017.[42] It has not received a number of modern graphics technologies, such as hardware acceleratedRay Tracing, on-GPU video decoding, and advancedanti-aliasingalgorithmslikeNvidia DLSS[43] andAMD FSR[44] In 2025 a cross-vendor OpenGLMesh Shader Extension was released, which was motivated partly by the Nividum project.[45][46][47]

Google'sFuchsia OS, while using Vulkan natively and requiring a Vulkan-conformant GPU, still intends to support OpenGL on top of Vulkan via the ANGLE translation layer.[48]

Version history

[edit]

The first version of OpenGL, version 1.0, was released on June 30, 1992, by Mark Segal andKurt 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 version history
VersionRelease DateFeatures
1.0June 30, 1992Initial release.
1.1March 4, 1997[49][50]Texture objects, Vertex Arrays
1.2March 16, 19983D textures, BGRA andpacked pixel formats,[51] introduction of theimaging subset useful to image-processing applications
1.2.1October 14, 1998A concept of ARB extensions
1.3August 14, 2001Multitexturing, multisampling,texture compression
1.4July 24, 2002Depth textures, GLSlang[52]
1.5July 29, 2003Vertex Buffer Object (VBO), Occlusion Queries[53]
2.0September 7, 2004GLSL 1.1,MRT, Non Power of Two textures, Point Sprites,[54] Two-sided stencil[53]
2.1July 2, 2006GLSL 1.2, Pixel Buffer Object (PBO), sRGB Textures[53]
3.0August 11, 2008GLSL 1.3, Texture Arrays, Conditional rendering, Frame Buffer Object (FBO)[55]
3.1March 24, 2009GLSL 1.4, Instancing, Texture Buffer Object, Uniform Buffer Object, Primitive restart[56]
3.2August 3, 2009GLSL 1.5, Geometry Shader, Multi-sampled textures[57]
3.3March 11, 2010GLSL 3.30, Retain as much OpenGL 4.0 functionality as possible, New blending functions, Sampler Objects, new texture and vertex formats
4.0March 11, 2010GLSL 4.00, Tessellation on GPU, shaders with 64-bit precision[58]
4.1July 26, 2010GLSL 4.10, Developer-friendly debug outputs,[b] compatibility with OpenGL ES 2.0[59]
4.2August 8, 2011[60]GLSL 4.20, Shaders with atomic counters, draw transform feedback instanced, shader packing, performance improvements
4.3August 6, 2012[61]GLSL 4.30, Compute shaders leveraging GPU parallelism, shader storage buffer objects, high-quality ETC2/EAC texture compression, increased memory security, a multi-application robustness extension, compatibility with OpenGL ES 3.0[62]
4.4July 22, 2013[63]GLSL 4.40, Buffer Placement Control, Efficient Asynchronous Queries, Shader Variable Layout, Efficient Multiple Object Binding, Streamlined Porting of Direct3D applications, Bindless Texture Extension, Sparse Texture Extension[63]
4.5August 11, 2014[9][64]GLSL 4.50, Direct State Access (DSA), Flush Control, Robustness, OpenGL ES 3.1 API and shader compatibility, DX11 emulation features
4.6July 31, 2017[11][65]GLSL 4.60, More efficient geometry processing and shader execution, more information, no error context, polygon offset clamp, SPIR-V, anisotropic filtering

OpenGL 2.0

[edit]

Release date: September 7, 2004

OpenGL 2.0 was originally conceived by3Dlabs to address concerns that OpenGL was stagnating and lacked a strong direction.[66] 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 withshaders, 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[67] includes support for GLSL 1.10.

OpenGL 2.1

[edit]

Release date: July 2, 2006

OpenGL 2.1 adds support for Pixel Buffer Objects, sRGB textures and GLSL 1.20.

Longs Peak and OpenGL 3.0

[edit]

Before the release of OpenGL 3.0, the new revision had the codenameLongs 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 becomeatomic, 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 ofCAD 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.[68] As a result, the spec was delayed, and the Khronos Group went into amedia 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,[69] with many developers professing that they would switch toDirectX 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,[70] with many vendors showing support for the update.[71][72]

OpenGL 3.0

[edit]

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 aforward-compatible context from the windowing system. OpenGL 3.0 features could still be accessed alongside these deprecated features, however, by requesting afull 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 version 1.30

Hardware support: NvidiaGeForce 8 Series and newer, ATIRadeon HD 2000 series and newer,Intel HD Graphics in IntelSandy Bridge processors and newer.

OpenGL 3.1

[edit]

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 afull context, or to access deprecated features using aforward-compatible context. An exception to the former rule is made if the implementation supports theARB_compatibility extension, but this is not guaranteed. Includes support for GLSL 1.40.

Hardware support: Mesa supports ARM Panfrost with Version 21.0.

OpenGL 3.2

[edit]

Release date: August 3, 2009

OpenGL 3.2 further built on the deprecation mechanisms introduced by OpenGL 3.0, by dividing the specification into acore profile andcompatibility 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

[edit]

Release date: March 11, 2010

OpenGL 3.3 includes minor additions, with the goal of retaining as much functionality as possible from OpenGL 4.0, while keeping support for older hardware.[58] Additions include new blending functions, Sampler Objects and new texture and vertex formats. Support is also added for GLSL version 3.30, major and minor versions now match with OpenGL.

OpenGL 4.0

[edit]

Release date: March 11, 2010

OpenGL 4.0 was released alongside version 3.3.[58] 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, such as tessellation.

Hardware support: NvidiaGeForce 400 series and newer, AMDRadeon HD 5000 series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),Intel HD Graphics in IntelIvy Bridge processors and newer.[73]

OpenGL 4.1

[edit]

Release date: July 26, 2010

  • Minimum "maximum texture size" is 16,384 × 16,384 for GPUs implementing this specification.[74]
  • Improved compatibility forOpenGL ES 2.0[75]
  • Multiple Viewports for the same rendering surface, or one per surface.[76]

Hardware support: NvidiaGeForce 400 series and newer, AMDRadeon HD 5000 series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),Intel HD Graphics in IntelHaswell processors and newer[73] (Linux Mesa: Ivy Bridge and newer). Additionally, this is the last core profile supported by Apple macOS.

OpenGL 4.2

[edit]

Release date: August 8, 2011[60]

  • 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: NvidiaGeForce 400 series and newer, AMDRadeon HD 5000 series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), andIntel HD Graphics in IntelHaswell processors and newer.[73] (Linux Mesa: Ivy Bridge and newer)

OpenGL 4.3

[edit]

Release date: August 6, 2012[61]

  • Compute shaders 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 withOpenGL 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: AMDRadeon HD 5000 series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),Intel HD Graphics in IntelHaswell processors and newer.[73] (Linux Mesa: Ivy Bridge without stencil texturing, Haswell and newer), NvidiaGeForce 400 series and newer. VIRGL Emulation for virtual machines supports 4.3+ with Mesa 20.

OpenGL 4.4

[edit]

Release date: July 22, 2013[63]

  • 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: AMDRadeon HD 5000 series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),Intel HD Graphics in IntelBroadwell processors and newer (Linux Mesa: Haswell and newer),[77] NvidiaGeForce 400 series and newer,[78]Tegra K1.

OpenGL 4.5

[edit]

Release date: August 11, 2014[9][64]

  • 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.[79]
  • 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: AMDRadeon HD 5000 series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),Intel HD Graphics in IntelBroadwell processors and newer (Linux Mesa: Haswell and newer), NvidiaGeForce 400 series and newer,[78]Tegra K1, and Tegra X1.[80][81]

OpenGL 4.6

[edit]

Release date: July 31, 2017[9][11][65]

Hardware support: AMDRadeon HD 7000 series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), IntelSkylake and newer, NvidiaGeForce 400 series and newer.[78]

Driver support:

  • Mesa 19.2 onLinux supports OpenGL 4.6 for Intel Broadwell and newer.[82] Mesa 20.0 supports AMD Radeon GPUs,[83] 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 onWindows 7SP1,10 version 1803 (April 2018 update) for AMD Radeon HD 7700+, HD 8500+ and newer. Released April 2018.[84][85]
  • Intel 26.20.100.6861 graphics driver onWindows 10. Released May 2019.[86][87]
  • NVIDIAGeForce 397.31 Graphics Driver onWindows 7,8,10x86-64 bit only, no32-bit support. Released April 2018[88]

Alternative implementations

[edit]

Appledeprecated OpenGL in iOS 12 and macOS 10.14 Mojave in favor ofMetal, but it is still available as ofmacOS 14 Sonoma (including onApple silicon devices).[89] The latest version supported for OpenGL is 4.1 from 2011.[90][91] A proprietary library from Molten – authors ofMoltenVK – called MoltenGL, can translate OpenGL calls to Metal.[92]

There are several projects that attempt to implement OpenGL on top of Vulkan. The Vulkan backend for Google'sANGLE achieved OpenGL ES 3.1 conformance in July 2020.[93] TheMesa3D project also includes such a driver, calledZink.[94]

Microsoft'sWindows 11 on Arm added support for OpenGL 3.3 via GLon12, an open source OpenGL implementation on top DirectX 12 viaMesa Gallium.[95][96][97]

Vulkan

[edit]
Main article:Vulkan

Vulkan, formerly named the "Next Generation OpenGL Initiative" (glNext),[98][99] is a ground-up redesign effort to unify OpenGL and OpenGL ES into one common API that will not be backwards compatible with existing OpenGL versions.[100][101][102]

The initial version of Vulkan API was released on February 16, 2016.

See also

[edit]

Notes

[edit]
  1. ^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.NV forNvidia. 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.[10]
  2. ^optional, made core in OpenGL 4.3

References

[edit]
  1. ^"Khronos Releases OpenGL 4.6 with SPIR-V Support".
  2. ^Lextrait, Vincent (January 2010)."The Programming Languages Beacon, v10.0". Archived fromthe original on May 30, 2012. RetrievedMarch 14, 2010.
  3. ^"Products: Software: OpenGL: Licensing and Logos". SGI. Archived fromthe original on November 1, 2012. RetrievedNovember 7, 2012.
  4. ^"The OpenGL Graphics System: A Specification"(PDF). 4.0 (Core Profile). March 11, 2010.
  5. ^"SGI – OpenGL Overview".Archived from the original on October 31, 2004. RetrievedFebruary 16, 2007.
  6. ^Peddie, Jon (July 2012)."Who's the Fairest of Them All?". Computer Graphics World. RetrievedMay 30, 2018.
  7. ^"OpenGL ARB to Pass Control of OpenGL Specification to Khronos Group".The Khronos Group. July 31, 2006. RetrievedMarch 18, 2021.
  8. ^"Khronos Membership Overview and FAQ". Khronos.org. RetrievedNovember 7, 2012.
  9. ^abcd"Khronos OpenGL Registry". Khronos Group. RetrievedJuly 31, 2017.
  10. ^"How to Create Khronos API Extensions". Khronos Group. RetrievedJuly 31, 2017.
  11. ^abc"Khronos Releases OpenGL 4.6 with SPIR-V Support". The Khronos Group Inc. July 31, 2017. RetrievedJuly 31, 2017.
  12. ^"Vulkan, OpenGL, and OpenGL ES SIGGRAPH 2017: No plan for new core version for OpenGL ES"(PDF).Khronos Group. 2017.
  13. ^"The Future of OpenGL (forum discussion)".Khronos Group. 2020.
  14. ^"Khronos News Archives".Khronos Group. November 28, 2022.
  15. ^"Khronos Blog".Khronos Group. November 28, 2022.
  16. ^"GLSL_NV_ray_tracing".GitHub.
  17. ^"GL_NV_mesh_shader".GitHub.
  18. ^"OpenGL - The Industry's Foundation for High Performance Graphics".The Khronos Group. July 19, 2011. RetrievedMarch 18, 2021.
  19. ^"A list of GLUT alternatives, maintained by". Khronos Group. RetrievedMay 2, 2013.
  20. ^"Related toolkits and APIs".www.opengl.org. OpenGL. RetrievedOctober 8, 2014.
  21. ^"IRIS GL, SGI's property".
  22. ^Kilgard, Mark (2008)."OpenGL Prehistory: IRIS GL (slide)".www.slideshare.net.
  23. ^"Preface: What is OpenGL?".OpenGLBook. RetrievedDecember 31, 2024.
  24. ^"Appendix B. Differences Between OpenGL and IRIS GL".tech-pubs.net. RetrievedOctober 3, 2025.
  25. ^"Creation of the OpenGL ARB". Archived fromthe original on February 22, 2007. RetrievedFebruary 16, 2007.
  26. ^"End of OpenGL++". Khronos Group.
  27. ^"Top Game Developers Call on Microsoft to Actively Support OpenGL".Next Generation. No. 32.Imagine Media. August 1997. p. 17.
  28. ^"Announcement of Fahrenheit". Archived fromthe original on September 27, 2007.
  29. ^"Members of Fahrenheit. 1998".Computergram International. 1998. Archived fromthe original on October 5, 2007.
  30. ^"End of Fahrenheit".The Register.
  31. ^"OpenGL ARB to pass control of OpenGL specification to Khronos Group". Khronos press release. July 31, 2006.
  32. ^"OpenGL ARB to Pass Control of OpenGL Specification to Khronos Group". AccessMyLibrary Archive.
  33. ^"OpenGL Celebrates Its 30th Birthday".www.phoronix.com. RetrievedDecember 7, 2024.
  34. ^"OpenGL is not dead, long live Vulkan".The Accidental Astronomer. April 9, 2023. RetrievedDecember 7, 2024.
  35. ^Smith, Ryan (June 5, 2018)."Apple Deprecates OpenGL Across All OSes; Urges Developers to use Metal".www.anandtech.com. Purch. Archived fromthe original on June 6, 2018. RetrievedJune 5, 2018.
  36. ^"GLQuake".Quake Wiki.
  37. ^eTeknix.com (July 29, 2016)."Doom OpenGL VS Vulkan Graphics Performance Analysis".eTeknix. RetrievedDecember 7, 2024.
  38. ^"Doom Wiki: id Tech 7". RetrievedOctober 26, 2021.
  39. ^"Technology Licensing: id Tech 2". Archived fromthe original on November 8, 2009. RetrievedSeptember 17, 2008.
  40. ^Dawe, Liam (March 7, 2023)."Dota 2 removes OpenGL support, new hero Muerta now live, big update due in April".GamingOnLinux. RetrievedMarch 26, 2023.
  41. ^"Jet Set Vulkan : Reflecting on the move to Vulkan".
  42. ^"OpenGL - The Industry's Foundation for High Performance Graphics".The Khronos Group. July 19, 2011. RetrievedJanuary 23, 2026.
  43. ^"NVIDIA DLSS SDK".github.com/NVIDIA/DLSS.
  44. ^"AMD FidelityFX-SDK".github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK.
  45. ^Michael Larabel (October 9, 2025)."OpenGL Mesh Shader Extension Merged".Phoronix.
  46. ^"OpenGL Resurges in 2025 with Mesh Shader Extensions for Gaming".Khronos Group. October 28, 2025.
  47. ^Mike Blumenkrantz (October 9, 2025)."Mesh Shaders In The Current Year".Super. Good. Code.
  48. ^"Magma: Overview".fuchsia.dev. RetrievedMarch 26, 2023.
  49. ^Kilgard, Mark J. (2001).OpenGL programming for the X Window System. Graphics programming (6. print ed.). Boston, Mass. Munich: Addison-Wesley. p. 6.ISBN 978-0-201-48359-8.
  50. ^"The OpenGL Graphics System: A Specification"(PDF). 1.1. March 4, 1997.
  51. ^Astle, Dave (April 1, 2003)."Moving Beyond OpenGL 1.1 for Windows".gamedev.net. RetrievedNovember 15, 2007.
  52. ^Isorna, J.M. (2015).Simulación visual de materiales : teoría, técnicas, análisis de casos. UPC Grau. Arquitectura, urbanisme i edificació (in Spanish). Universitat Politècnica de Catalunya. p. 191.ISBN 978-84-9880-564-2. RetrievedAugust 21, 2019.
  53. ^abc"The OpenGL Graphics System: A Specification"(PDF). 2.1. December 1, 2006.
  54. ^"Point Primitive".
  55. ^"The OpenGL Graphics System: A Specification"(PDF). 3.0. September 23, 2008.
  56. ^"The OpenGL Graphics System: A Specification"(PDF). 3.1. May 28, 2009.
  57. ^"The OpenGL Graphics System: A Specification"(PDF). 3.2 (Core Profile). December 7, 2009.
  58. ^abc"Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0". March 11, 2010.
  59. ^"Khronos Drives Evolution of Cross-Platform 3D Graphics with Release of OpenGL 4.1 Specification". July 26, 2010.
  60. ^ab"Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification".The Khronos Group. August 8, 2011.
  61. ^ab"Khronos Releases OpenGL 4.3 Specification with Major Enhancements". August 6, 2012.
  62. ^"Khronos Releases OpenGL 4.3 Specification with Major Enhancements". August 6, 2012.
  63. ^abc"Khronos Releases OpenGL 4.4 Specification". July 22, 2013.
  64. ^ab"Khronos Group Announces Key Advances in OpenGL Ecosystem – Khronos Group Press Release". The Khronos Group Inc. August 10, 2014. RetrievedApril 17, 2015.
  65. ^abKessenich, John; Baldwin, Dave."The OpenGL Shading Language, Version 4.60.7".The Khronos Group Inc. RetrievedAugust 21, 2019.
  66. ^Abi-Chahla, Fedy (September 16, 2008)."OpenGL 3 (3DLabs And The Evolution Of OpenGL)". Tom's Hardware. RetrievedOctober 24, 2010.
  67. ^"The OpenGL Graphics System: A Specification"(PDF). 2.0. October 22, 2004.
  68. ^"OpenGL ARB announces an update on OpenGL 3.0". October 30, 2007. Archived fromthe original on November 7, 2007. RetrievedOctober 31, 2007.
  69. ^"OpenGL 3.0 Released, Developers Furious – Slashdot". Tech.slashdot.org. August 11, 2008. RetrievedNovember 7, 2012.
  70. ^"OpenGL BOF went over well, no pitch forks seen".
  71. ^"The Industry Standard for High Performance Graphics". OpenGL. August 18, 2008. RetrievedJuly 31, 2017.
  72. ^"NVIDIA provides early OpenGL 3.0 driver now".
  73. ^abcd"Intel Iris and HD Graphics Driver for Windows 7/8/8.1 64bit".Intel Download Center. Archived fromthe original on April 2, 2015.
  74. ^"Expected maximum texture size - Graphics and GPU Programming".GameDev.net.
  75. ^"OpenGL 4.1 (Core Profile) - July 25, 2010"(PDF).Khronos.org.
  76. ^"History of OpenGL - OpenGL Wiki".Khronos.org.
  77. ^"Intel Skylake-S CPUs and 100-series Chipsets Detailed in Apparent Leak".NDTV Gadgets. April 17, 2015.
  78. ^abcLarabel, Michael (July 31, 2017)."NVIDIA Releases 381.26.11 Linux Driver With OpenGL 4.6 Support".Phoronix.
  79. ^"OpenGL 4.5 released—with one of Direct3D's best features".Ars Technica. August 11, 2014. RetrievedApril 17, 2015.
  80. ^"SG4121: OpenGL Update for NVIDIA GPUs".Ustream. Archived fromthe original on May 17, 2015. RetrievedApril 17, 2015.
  81. ^Kilgard, Mark (August 12, 2014)."OpenGL 4.5 Update for NVIDIA GPUs". RetrievedApril 17, 2015.
  82. ^Larabel, Michael (August 21, 2019)."Intel's OpenGL Linux Driver Now Has OpenGL 4.6 Support For Mesa 19.2".Phoronix.
  83. ^Larabel, Michael (November 27, 2019)."AMD's RadeonSI Driver Finally Enables OpenGL 4.6".Phoronix.
  84. ^"AMD Adrenalin 18.4.1 Graphics Driver Released (OpenGL 4.6, Vulkan 1.1.70) – Geeks3D".www.geeks3d.com. May 2018. RetrievedMay 10, 2018.
  85. ^"Radeon Software Adrenalin Edition 18.4.1 Release Notes".support.amd.com. RetrievedMay 10, 2018.
  86. ^"Intel Graphics Driver 25.20.100.6861 Released (OpenGL 4.6 + Vulkan 1.1.103) | Geeks3D". May 16, 2019. RetrievedMay 16, 2019.
  87. ^"Windows 10 DCH Drivers".Intel DownloadCenter. RetrievedAugust 21, 2019.
  88. ^"NVIDIA GeForce 397.31 Graphics Driver Released (OpenGL 4.6, Vulkan 1.1, RTX, CUDA 9.2) – Geeks3D".www.geeks3d.com. April 25, 2018. RetrievedMay 10, 2018.
  89. ^"Apple Developer Documentation".developer.apple.com.
  90. ^Cunningham, Andrew (October 7, 2019)."macOS 10.15 Catalina: The Ars Technica review".Ars Technica.
  91. ^Axon, Samuel (June 6, 2018)."The end of OpenGL support, plus other updates Apple didn't share at the keynote".Ars Technica. RetrievedOctober 19, 2020.
  92. ^"Vulkan, and faster OpenGL ES, on iOS and macOS".Molten. RetrievedOctober 19, 2020.
  93. ^The ANGLE Project Authors (October 14, 2020)."google/angle: A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android".GitHub. RetrievedDecember 17, 2020.
  94. ^"Zink".The Mesa 3D Graphics Library latest documentation.
  95. ^"State of Windows on Arm64: a high-level perspective".Chips and Cheese. March 13, 2022. RetrievedOctober 23, 2023.
  96. ^"Introducing OpenCL and OpenGL on DirectX".Collabora | Open Source Consulting. RetrievedOctober 23, 2023.
  97. ^"Deep dive into OpenGL over DirectX layering".Collabora | Open Source Consulting. RetrievedOctober 23, 2023.
  98. ^Dingman, Hayden (March 3, 2015)."Meet Vulkan, the powerful, platform-agnostic gaming tech taking aim at DirectX 12".PC World. RetrievedMarch 3, 2015.
  99. ^Bright, Peter (March 3, 2015)."Khronos unveils Vulkan: OpenGL built for modern systems".Ars Technica. RetrievedMarch 3, 2015.
  100. ^"Khronos Announces Next Generation OpenGL Initiative". AnandTech. Archived fromthe original on August 13, 2014. RetrievedAugust 20, 2014.
  101. ^Anthony, Sebastian (August 11, 2014)."OpenGL 4.5 released, next-gen OpenGL unveiled: Cross-platform Mantle killer, DX12 competitor".ExtremeTech. RetrievedAugust 20, 2014.
  102. ^"Khronos Publishes Its Slides About OpenGL-Next". Phoronix. RetrievedAugust 22, 2014.

Further reading

[edit]

External links

[edit]
Wikimedia Commons has media related toOpenGL.
Wikibooks has a book on the topic of:OpenGL Programming
Khronos Group Standards
Active
Inactive
Authority control databases: NationalEdit this at Wikidata
Retrieved from "https://en.wikipedia.org/w/index.php?title=OpenGL&oldid=1338836789"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp