Either way, my guess is that that wouldn’t make much difference to performance, since the expensive part is actually computing and drawing all the little textures.
Execution flow looks like:
1. application renders a list of points
2. those points are transformed by the Vertex Shader
3. the output of [2] is fed into the Geometry Shader.
(and the output of [3] is additional geometry, created "on the fly", which is then rasterized.)
As a simple example, a geometry shader could turn each point into a square. For each input point, it outputs the four corners of the square: [[ptX-1,ptY-1] [ptX+1,ptY-1] [ptX+1,ptY+1] [ptX-1,ptY+1]]
But yeah that's not coming to GLES anytime soon.
I don't think opengl es has quads so he's using two polygons per square running the vertex shaders 4 times per square.
But the difference is probably real small that I might be useless optimization. Was just an idea as I was reading the first part of the post.