The issue was with the indices being passed to glDrawElements. The sample code had these as GLuints - changing them (and all other relevant references etc.) to GLubyte got everything working.
There is a possible documentation issue here - documentation for glDrawElements at http://www.opengl.org/wiki/GLAPI/glDrawElements
says indices can be GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT or GL_UNSIGNED_INT but at http://www.khronos.org/opengles/documen ... ments.html
it says only GL_UNSIGNED_BYTE or GL_UNSIGNED_SHORT. I appreciate that these may relate to different versions of OpenGL ES but despite the fact that I'm linking to 2.0 it is the 1.0 documentation that seems to be right.
Hope this helps others if they encounter similar problems.