This page lists some of the Maemo software I’ve been working on.
OpenGL ES is a slimmed version of the desktop OpenGL standard intended for more limited embedded devices. To get started, you’ll need to choose an OpenGL ES engine, that is, a library that will perform the actual rendering work. Currently, there are two software based alternatives:
- libvincent : Vincent OpenGL ES rasterizer. The Vincent rasterizer is written for OpenGL ES from the ground up, but suffers from some performance and accuracy issues.
- dgles : An OpenGL ES wrapper for the Mesa OpenGL rasterizer. This wrapper by Hybrid converts OpengGL ES commands on the fly. It can use any OpenGL renderer, such as Mesa, to do the actual drawing.
Next, you might need some libraries to provide OpenGL ES access to C/C++ and Python applications.
- libsdl : SDL extended with OpenGL ES support. With this library, getting an OpenGL ES context up and running is just a matter of:
SDL_SetVideoMode(800, 480, 16, SDL_OPENGLES);
- libglutes : GLUT extended with OpenGL ES support. This library provides most of the familiar GLUT for use with OpenGL ES.
- python-opengles : OpenGL ES library for Python. Check out the examples.
- python-egl : EGL library for Python. Complements the python-opengles library by enabling context creation through EGL.
Finally, here’s the really experimental bit:
- glesport : The runtime OpenGL to OpenGL ES translator. Think of this as the inverse of dgles above. With this library, you should be able to run unmodified OpenGL applications on an OpenGL ES renderer. Naturally, not all features of OpenGL and GLX are supported, but the ones most commonly used by games work fine. For instance, Quake 2 runs fine with this library.
Technically, the translation is done with Mesa through the use of an OpenGL ES back-end. Mesa does all the hard work of managing the OpenGL state machine, while the back-end only needs to do relatively simple rendering. GLX emulation is implemented on top of EGL.