OpenGL® for Linux® is an implementation of the hardware independent graphics library that is designed to run on the Linux® operating system. The actual abstract programming interface (API) for the Linux® version of OpenGL® is identical in most ways to the implementations for other operating systems, but the way the API connects to the hardware or the operating system can be far more complex for a number of reasons. Unlike other operating systems in which the connection between the API and the hardware is largely transparent, OpenGL® for Linux® can potentially involve several intermediary programs or drivers that help to maintain the independent and abstract nature of the API.
One of the problems that OpenGL® for Linux® faces is that there are many types of Linux® distributions, each of which can be different enough from the others to be unpredictable at the low level on which OpenGL® operates. For this reason, not all graphics card manufacturers provide Linux® drivers for their cards that support OpenGL®, and some cards that do have drivers use non-standard interfaces. This means the OpenGL® library uses a standard, abstract windowing system for Linux® — called X Windows — that employs OpenGL® to natively produce graphical user interfaces (GUIs). A drawback of this system is that, without the proper meshing of all software and hardware components on a system, OpenGL® for Linux® can be relegated to software emulation of operations that should be taking place within the graphics hardware.
In an effort to help bridge the missing gaps that can appear when installing, programming and running applications under OpenGL® for Linux®, a special intermediary driver known as the application binary interface (ABI) was developed. This piece of software provides a bridge between the manufacturers' supplied hardware drivers and the OpenGL® API. Nearly all graphics cards are capable of being used through the ABI, although certain hardware acceleration features can become inaccessible unless the interface has been updated to handle them.
Another method that OpenGL® for Linux® uses to attempt to interface with different hardware under different implementations is known as the direct rendering interface (DRI). The DRI is a special framework that is used to allow OpenGL® to access hardware acceleration functions within the graphics card. While this solution is accepted by some manufacturers, it is ignored by others. The result is that, depending on the graphics hardware installed on a particular computer system, completely different methods of installing and using OpenGL® for Linux® will need to be employed.