OpenGL ES Renderer
I had a go, a few weeks back, at an Android port of the engine.
I played with the iPhone a few years back but at that time was busy enough with work and a Wii port not to be able to do anything meaningful despite a few hours spent battling with the terrible XCode IDE.
1. The Android break
Given this past experience and in need of a break from my "debug->feature push" routine I was fairly reluctant to work on a mobile port. Still, it's a pretty neat thing to have your engine running on a device that fits in your pocket. That's when it struck me: Let's have an Android break!

The goal was to get that running on a mobile device...
and look as close as possible to the desktop version.
There is no comparison whatsoever between the two platforms. Granted the iPhone is fairly easy to get rolling (if you can handle XCode which is not a small task unless you run a 3 cinema display setup maybe) but Android just makes it even easier. The NDK build system is dead simple and uploading and testing your application on a real device only requires you to know how to connect your phone to your PC via USB.
Alright, I'm lying a bit... there's a few things to setup and you have to use Eclipse for the Java bridge but even then it is amazing to see how painless the NDK is to put in motion.
2. Porting the Engine
Building the engine was a child game. Having a working Linux port and no exceptions or RTTI used in the codebase, as well as only a few dependencies on highly portable libraries made it possible to ready a static library of the engine in a few hours. Writing the glue code in Java was fairly straightforward and is something rather well documented on the Internet. One day after starting the experiment, scenes were running with the NULL video output.
Building the desktop OpenGL video output, while a good idea at first sight, is just not possible. OpenGL ES really dropped a lot of the OpenGL bloat and hopefully the desktop API will slowly evolve toward the mobile one. It took 3 days to get the GLES 2.0 video output working.

Full-blown deferred shading on a mobile system.
A few post-process to add and it will be pretty close!
The current GL ES renderer has complete support for all rendering attributes and supports shader tree just like its desktop counterpart. Unfortunately portable devices are way too slow to support such a workload so this renderer will probably sleep for a few years (months?) until phones get more powerful. Until then the GL ES 1.1 branch of the renderer is being developed to provide Android support for two games currently being developed on GameStart. Information about these will be posted on this blog when the time comes.

The poor HTC Desire bit more than it could chew...
- Emmanuel Julien's blog
- Login or register to post comments