The OpenGL® mobile development library, more commonly known as OpenGL® for Embedded Systems (OpenGL® ES or GLES), is a collection of functions based on the standard OpenGL® distribution that has been reduced in both size and inherent functionality to allow the library to be used on a wide range of mobile devices and embedded systems. An application that uses the OpenGL® mobile library can effectively render three-dimensional (3D) graphics with whatever proprietary hardware has been used in the device, usually through a special intermediary driver or software layer. Several versions of the OpenGL® mobile library exist to accommodate the various types of embedded hardware that can be used, from fixed systems to programmable systems. Just like the standard form of OpenGL®, the mobile version provides extensions for custom hardware functions developed by the manufacturers.
The largest challenge that any OpenGL® mobile implementation faces is the unusually small limitations of embedded systems and mobile devices. This means the libraries usually used for desktop systems or laptops, which were intended to be employed under a full operating system with at least moderate resources, need to be modified to take up less space and deal with the potential unavailability of resources while running a program. These resources can be memory, processing power or even access to a display context, but they also can include much more complex elements, such as file systems or input and output ports that might have no presence on the device.
An OpenGL® mobile library implementation also must deal with the issue of individual, sometimes unique, hardware in devices. Even though the library is largely abstracted from the actual low-level interface between the hardware and software, some OpenGL® functions might not neatly fit into the operating paradigm of the display or graphics hardware. To avoid this problem, the organization that develops OpenGL® created a standard that proprietary interfaces can use to ensure programmers can use common code in mobile applications and receive predictable results. Manufacturers have the option not to use the developed standards, in which can they need to create custom OpenGL® drivers and extensions for the hardware.
On advanced systems, such as consoles or tablet devices, the lightweight OpenGL® mobile library can be used to create 3D graphics that are of the same quality and speed as those on a desktop system. This is because of embedded support for features such as shaders, as well as advanced graphics hardware that can accelerate rendering without the need to pass through several pieces of intermediary hardware, as might be the case with a computer that does not use an integrated graphics card. The OpenGL® mobile libraries have become one of the standard graphics programming tools used in devices ranging from small console gaming systems to handheld digital assistants.