Imagination PowerVR SDK Blog

glDrawArrayInstanced vs. geometry shader for rendering a large number of quads



I want to render a large number of screen space 2D quads which only distinguish by position and texture coordinates. As far as I can tell I have 2 primary options to do this:

  1. Submit a number of vertices with attributes position, size and texture coordinates, then emit 4 vertices using a geometry shader that form one quad consisting of two triangles.

  2. Create a quad base geometry, then replicate this using glDrawArrays instanced. The missing attributes are filled in by a vbo containing the attibutes from option 1) whose position component is updated accordingly.

Which one is potentially faster on an embedded PowerVR Series 6 system with GLES 3.1?



I think the second way(Instancing Drawing ) is the fasted, but try to use indexed drawing using glDrawElementsInstanced.


In theory yes, but I have seen benchmarks that condemn instancing like this one
This is why I hoped to find someone here who has done something similar on a power vr 6 system.