There are several types of Open Graphics Library® (OpenGL®) libraries that can be installed and used on computer systems, and most of them serve specific needs of graphics programmers. The first type includes the basic, core OpenGL® libraries, which contain roughly 120 commands to allow access to graphics hardware, although these OpenGL® libraries can be further divided depending on the platform on which they are intended to operate. Many utility libraries have been created — some of which are almost always used by OpenGL® programmers — to help group very-low-level functions into single higher-level calls for convenience and code clarity. There occasionally are OpenGL® libraries that are developed by the specific manufacturers of graphics hardware to help boost performance or support special effects that the hardware performs natively. There also are very-high-level user-created libraries that have spawned from larger projects and are distributed to assist in rapid application development.
Core OpenGL® libraries are necessary for the development and deployment of programs that use OpenGL® to render graphics. They allow programs to use a common abstract programming interface (API) to call the functions inside the OpenGL® library, after which the library will interact directly with hardware drivers. The drivers then access the hardware directly, causing an increase in display speed. All other OpenGL® libraries are based on the core libraries.
Many of the commands used by the core libraries are fairly low level, so a number of utility libraries, also called toolkits, have been created. These bundle the basic commands into more functional routines that take much of the repetition out of using OpenGL®. One example of using a utility library involves drawing a circle, which could take several lines of code with just core OpenGL® but can be condensed into one optimized routine within a utility library such as the OpenGL® Utility Toolkit (GLUT). Occasionally, some libraries share the same name but are ported for use on different operating systems or for different language bindings, and they might contain different functionalities.
Some OpenGL® libraries are actually produced by hardware manufacturers. Extended libraries can be access though the OpenGL® extensions mechanism or directly with APIs provided by the manufacturers. These types of libraries do not always see widespread use because of their narrow target platforms and because very popular extensions are often folded into the core libraries.
There also are OpenGL® libraries that are created by programmers and users that are not associated with the core libraries or any hardware. These libraries are often released so other programmers who are creating certain types of scientific, mathematical or entertainment applications can benefit from having a framework on which to build. There also are community-derived libraries that add interactivity and program logic to the other libraries in a practical way.