First and foremost, do not create multiple instances of GLSurfaceView. Each SurfaceView instance has two parts, the Surface and the View. Creating nine sibling Views is okay, but each Surface is a separate graphics layer composited by the system, and having nine of them will be inefficient. The system will end up using GLES to do the composition, so you're better off (for efficiency as well as flexibility and perhaps simplicity) doing the composition yourself.
I don't know why you're getting that particular error. You would need to look at the line of code that's throwing the exception. If the message in your question is all you're getting, then something is filtering the exception, and you'll need to attach a debugger and have it break on NPE.
At any rate, you want to draw all nine images on one GLSurfaceView. Taking a quick look at the demo code (which looks nicely structured), the function computeOutputVertices()
in TextureRenderer.java is setting the position and size of the output. Modify that to position each of the nine textures where you want them to go, and modify renderTexture()
to operate in a loop.
See also this demo for another way to filter images.