another question -- I want to draw a voxelized model, ie an object made of thousands of tiny cubes. Is it necessary to pass the cube vertex information (translated by the cube position) to the renderer thousands of times? Isn't there any way of using shaders so that I only need pass the cube information once, then pass arrays of positions and colors for all the cubes?

From reading about OpenGLES 2.0 I can't see a way to do it. Is it not possible? (though it seems like OpengGLES 3.0 will offer that ability).

And even to draw a single cube, do I really have to pass 36 vertices instead of 8? Because each vertex seemingly is associated with only one normal, you've got to pass the same vertex in three times, once for each face it is part of. That's so inefficient! How do programs like Minecraft, with thousands upon thousands of cubes, do it? Is there some way they get around having to pass all that vertex information?