GL4ES - The OpenGL driver for GLES Hardware

GL4ES is a OpenGL 2.1/1.5 to GL ES 2.0/1.1 translation library, with support for Pandora, ODroid, OrangePI, CHIP, Raspberry PI, Android, Emscripten and AmigaOS4.

View on GitHub


GL4ES - OpenGL for GLES Hardware

gl4es build status

This is a library provide OpenGL 2.x functionality for GLES2.0 accelerated Hardware (and of course also support OpenGL 1.5 function, sometimes better than when using GLES 1.1 backend) There is also support for GLES 1.1 Hardware, emulating OpenGL 1.5, and some OpenGL 2.x+ extensions.

GL4ES is known to work on many platform: OpenPandora, ODroid, RaspberryPI (2 and 3 at least), PocketCHIP, “otherfruit”PI (like the OrangePI), Android, iOS, x86 and x86_64 Linux (tested using mesa-egl). There is also some WIP support for AmigaOS4, using experimental GLES2 driver for Warp3D.

This library is based on glshim ( but as now evolved far from it, with different feature set and objectives. Go check this lib if you need things like RemoteGL or TinyGLES (for software rendering).

The focus is on compatibility and speed with a wide selection of game and software.

It has been tested successfully of a large selection of games and software, including: Minecraft, OpenMW, SeriousSam (both First and Second Encounters), RVGL (ReVolt GL), TSMC (The Secret Maryo Chronicles), TORCS, SpeedDreams, GL-117, Foobillard(plus), half life 1&2, Blender 2.68 to name just a few. I have also some success with Linux port of XNA games, using either MonoGame or FNA.

Most function of OpenGL up to 1.5 are supported, with some notable exceptions:

Some known general limitations:

Status of the GLES2 backend

Status of the GLES1.1 backend

If you use gl4es in your project (as a static or dynamic link), please mention gl4es in you readme / about / whatever.


How to compile and per-platform specific comment can be found here


Standard GLU do works without any issues. You can find a version here if you need one.


Put lib/ in your LD_LIBRARY_PATH. Beware that GL4ES is meant to replace any libGL you can have on your system (like Mesa for example)


There are many environment variable to control gl4es behavior, also usable at runtime using glHint(...).

See here for all variables and what they do.

Media (what is working already)

Some screenshot and youtube links of stuffs that works here

Version history

The change log is here