

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. 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. If multiple vendors agree to implement the same functionality using the same API, a shared extension may be released, using the identifier EXT. 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(). All extensions are collected in, and defined by, the OpenGL Registry.Įach extension is associated with a short identifier, based on the name of the company which developed it. 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. Extensions may introduce new functions and new constants, and may relax or remove restrictions on existing OpenGL functions. In addition to the features required by the core API, GPU vendors may provide additional functionality in the form of extensions. 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. New versions of the OpenGL specification are regularly released by the Khronos Group, each of which extends the API to support various new features. This is perhaps the greatest difference between OpenGL and its competitor, DirectX. For the same reason, OpenGL is purely concerned with rendering - it provides no APIs related to input, audio or windowing. The specification says nothing on the subject of obtaining, and managing, an OpenGL context, leaving this as a detail of the underlying windowing system. As such, OpenGL has very many language bindings, some of the most noteworthy being the Javascript binding WebGL the C bindings WGL, GLX and CGL the C binding provided by iOS and the Java and C bindings provided by Android.Īs well as being language-independent, OpenGL is also platform-independent. Although the function definitions are superficially similar to those of the C programming language, they are language-independent. The API is defined as a number of functions which may be called by the client program, alongside a number of named integer constants (for example, the constant GL_TEXTURE_2D, which corresponds to the decimal number 3553). Although it's possible for the API to be implemented entirely in software, it's designed to be implemented mostly or entirely in hardware. The OpenGL specification describes an abstract API for drawing 2D and 3D graphics.


5.9 Longs Peak and OpenGL 3.0 controversy.
