There are a number of different OpenGL® extensions, mostly used to help manage and maintain the ordered structure of the OpenGL® libraries. There are four main types of OpenGL® extensions: vendor, approved, generic and core. Approved, generic and core extensions all denote functions and libraries that are, in some way, moving along a path toward being included in the general distribution of the OpenGL® development kit. Vendor extensions are custom-made functions that apply to specific hardware or software environments. There are a few other types, though they are more for sub-classification of the many extensions that exist.
One of the reasons why there are different types of OpenGL® extensions is because of the widespread use of the core libraries and the potentially confusing amount of proprietary code being created to extend it. The OpenGL® Architecture Review Board (ARB) helps to maintain and enforce the OpenGL® standard and manage extensions. Many extensions begin either as vendor extensions or ubiquitous extensions and can, over time, be used by multiple vendors, earning the title of a generic extension. Generic extensions can then be reviewed by the ARB and become ARB-approved extensions that will most likely join the core extensions.
![](http://images.wisegeek.com/slideshow-mobile-small/spinal-cord-highlighted-in-red.jpg)
Vendor OpenGL® extensions are functions implemented by the manufacturers of graphics hardware or operating systems. These types of extensions allow a manufacturer to improve, or introduce new functionality to, their graphics performance and then make those improvements available to OpenGL® programs. All vendor extensions begin with an ARB-assigned code to represent the name of the manufacturer, indicating the environment in which the function could be available.
Generic OpenGL® extensions are functions that have been used and implemented by multiple manufacturers and no longer need to be designated with special vendor prefix codes. Not all generic extensions need to be implemented to maintain compliance with the OpenGL® standard. A generic extension uses the prefix GL_EXT before the name of the function or constant.
Approved OpenGL® extensions are those that have been adopted by more than one manufacturer and have been reviewed by the ARB, allowing them to become part of the normal OpenGL® library. Functions of this type generally become implemented by all manufacturers, regardless of which vendor actually invented the extension and regardless of whether the other vendors have hardware that can support the requested functions. This type of extension carries the prefix GL_ARB.
Core OpenGL® extensions are functions that are able to upgrade the performance of older programs by allowing calls to previous versions of the OpenGL® function to execute the most recent code. As new OpenGL® versions are released, the new core extensions can be called seamlessly from an older program without the need to change any of the source code. Despite the convenience of improving backward compatibility, core OpenGL® extensions still can be depreciated over time.