Most platforms that at least <i>support</i> OpenGL/ES seem to be at least similar enough conceptually that you should just need different optimised render paths, not a totally different engine. Different render paths are something you'll need anyway, regardless of API, unless you're targeting exactly one machine.<p>You'll probably struggle more with the difference in RAM and CPU power available to the app than the different GPUs. In the simplest case you just use bigger textures and higher-poly models on better hardware if they all implement GL ES. Compare this to, say, the Nintendo DS, which is different from any other GPU I've ever worked with; writing a cross-platform engine that supports it is tricky. There isn't a GL ES implementation for it as far as I'm aware.