24 07 2007
OpenGL ES for Maemo
Lately I’ve been toying around with the idea of adding OpenGL ES support to the Nokia N800 internet tablet. As you might know, OpenGL ES is a slimmed down version of the desktop OpenGL standard. An open source software implementation called Vincent exists for Linux and Windows CE. Porting it to Maemo, the Debian-based software environment for the N770 and N800, was just a matter of creating a package for it.
But a library is not much fun without some supporting software. I started by adding OpenGL ES support to SDL, a popular game programming library. With the patched SDL, getting an OpenGL ES context up and running is just a matter of
SDL_SetVideoMode(800, 480, 16, SDL_OPENGLES);
GLUT is another widely used high-level library for dealing with OpenGL. An OpenGL ES version of GLUT called GLUT|ES exists for Windows CE. I took that and ported it back to Linux.
Finally, Teemu Haapoja had made an OpenGL ES library for Python in the spirit of PyOpenGL. Originally his library was for Symbian, but now he has ported it to over to Maemo.
So here’s what I have so far:
- libvincent: Vincent OpenGL ES engine
- libsdl: SDL with OpenGL ES support
- libglutes: GLUT with OpenGL ES support
- python-egl: EGL library for Python
- python-opengles: OpenGL ES library for Python
I’ve set up a Maemo repository for these packages. You can get the packages with these settings:
- Name: Muksuluuri
- Url: http://muksuluuri.ath.cx/maemo
- Distribution: bora
- Components: main
The repository also has some additional packages, like Mesa for full OpenGL support. You can find the source code at my darcs repository.
The libraries still have some minor kinks to iron out. For some reason, Vincent renders everything upside down (I said minor, didn’t I :). The OpenGL ES version of SDL also depends on the full OpenGL libraries due to some braindamage in the patch. I hope to have these sorted out soon, along with a new utility library to ease porting OpenGL programs to OpenGL ES.
Oh, I almost forgot the mandatory screenshot. Here’s a Python version of glxgears running on the N800:
Here’s the same thing in motion:
10 Comments so far
Leave a comment
Nice!
I had OpenGL working on the 770, now I will try your package rather than start fresh.
The rumor is that the N800 has OpenGL acceleration. Do you know anything about that?
Bruce
Hello, I try OpenGL SE on my nokia n800 with your maemo repository but my n800 (firmware v4.2) doesn’t find the packages when I update the list of applications. If i try an installation with *.deb files it say there is an incompatibility and the installation fail … Have you got a solution ?
Thank You
Hey,
the link to the python version of glxgears seems to be broken.
Hey,
I tried to port glxgears myself, but I came across some problems trying to import gles from your package. Error message was that no libvincent.so.0 was found. I searched through your packages, but was unable to find it. Would you mind telling me where I’ve gone wrong?
Hi,
libvincent.so.0 should be provided by the Vincent package in my git repository. If it isn’t, it might be that it is installed under some different name, such as libvincent.so.1. It should be enough to either to rename it or add a symbolic link with the correct name.
hi,
I am trying to use opengl es in meamo for Nokia N810. Please help me. Where can I get SDK’s?
Shahed
hi,
I need to write opengl application in linux maemo with touch screen supported device. DO any one mention the name of such device?
BR,
Shahed
[…] Clutter needs OpenGL (ES). Hardware support on n8×0 has some issues and software rendering leaves something to be desired. So will maemo5 run on current hardware? I don’t know, but I […]
Hi Buddy!
This is very interesting,
But how could i install this libs on maemo in diablo version?
actually i was trying to port a game called “NEVERBALL” on oepn gl ES along with SDL..but i’m not able to understand how to change the SDL tht is used with open gl into an open gl ES solution..apis lik..SDL_GL_swapbuffer,SDL_GL_SET_ATTRIBUTE..how to orient them accordingly..kindly suggest a way out..its pretty urgent..