I am creating a GUI system with colored geometry (i.e. the only textures in the GUI will be a bitmap text). I am using 3.1+ OpenGL. Since everything will be formed by a quad, and since it's a GUI, it needs to be fast. How would I approach this?
Should I create a VAO for the entire GUI system and a VBO for each of the quads? Do I then move and resize the quads by updating the VBO's data with glBufferSubData()? I've never used VAOs before, so I have no real idea of the benefits.
Or maybe I could have a single VBO quad and instance it with transformations?
I don't know, I'm a total beginner to OpenGL, so maybe these aren't viable options. In that case, is there a best way of doing this for my specific purposes? For the GUI, I only have to be able to create quads, move them and resize them.
Also, what about drawing the quads? From what info I found, DrawElements seems to be the best way, assuming I use an element array buffer and don't upload the indices every frame.
Please, could I get an opinion on this?