Called unimplemented OpenGL ES API

It seems like I’ve been stuffing around with experimental media libraries for ever and a day. Hopefully they’ll be a breakthrough soon so I can get back to actually making games for a change

The Symptom

Work with Android and SDL had been going rather smoothly until I tried to test my application on an actual phone. I managed to get hold of an Samsung Galaxy Fit from a friend who works at an electronics store, but when installed my prototype on it and I was greeted with a nice friendly black screen of death.

My application an fine on the emulator but crashed instantly on an identical physical device. Oh piss.

At this point I went back to the simple Space Invaders example that the port comes with. This time the game ran but with no input and no images appearing on screen (a slight less deathly black screen). Meanwhile Logcat filled itself up with a bunch of identical error entires:

Called unimplemented OpenGL ES API

So both of these applications had worked fine on the emulator, but on my new smart-phone neither was working, not even the example project!


The Disease

I should perhaps have done a bit more research before affirming the existence of an official Android port for SDL. As with many Open Source projects it can be very difficult to tell how experimental something is, but this is a particularly confusing case. Why? Well as far as I can tell there are actually at least two different SDL ports for Android:

  1. On the SDL website (good) hidden away in /tmp (uh-oh) with support for SDL 1.3 (I think). This one seemed more kosher to me, had less of a kitchen-sink (no on-screen keyboard emulation) and had much clearer documentation. It’s the one I have been trying, and failing, to get working for the past week or so.
  2. The first entry if you Google “Android SDL”, this one supports SDL 1.2, the stable version I mostly use, but links to the first for 1.3 support. You can grab it up-to-the-minute from github and there’s a list of games using the port. Most importantly I’ve actually gotten some of these to work on my Galaxy! Trouble is this port is rather messy and confusing, so thus far I’ve been unable to compile anything myself using it.

Both of these ports are a little buggy and unreliable: I should point out that will some applications created using the second worked on my phone, others did not…


The Cure

“We miss you, kiss the Logcats!

Now that you’re as confused as I am: thus far I don’t have any solution to these problems. I want to continue with SDL since there is also an iOS port bouncing around somewhere, meaning that we could easily port the game to iPhones later. But if this port is as unstable as the Android ones perhaps it might make more sense to do things directly with this special Embedded Systems OpenGL after all. For a start I’d be able to avoid calling unimplemented interfaces if I was writing all the calls myself. Then again it would mean a lot more glue-code, and I’m sick to death of all this non game-related programming!

The above is not to say that I’ve exhausted all possibilities here, but it’s taking a lot longer than I thought it would which is disappointing. Still, the fact that I got OpenTyrian to run means that there’s hope for this port yet.

Guess I’ll just keep working away at it and hope for a break-through sooner rather than later. Any solutions or suggestions would be most welcome at this point ;)