Original Post
I'm looking for advice on implementing the [rendering portion] of my GUI using VBOs. I realize this is probably quite easy, technically speaking, but I've never used VBOs for obscenely trivial geometric tasks and I'm wary of doing so incorrectly. I'm aware of most of the simpler "tricks" for GUI rendering (e.g. restrained updating, render to texture, render only the updated widgets, etc.) it's how to use the VBO(s) as replacements for immediate mode rendering that is throwing me. I can't shake the idea that it is complete overkill.
Google searching turned up several options/solutions:
Google searching turned up several options/solutions:
- Use a monolithic VBO for the entire GUI, based on the reasoning that multitudes of ant-sized VBOs are not performant (followed by a large flamefest over the validity of that statement).
- Use an army of small VBOs, where each VBO corresponds to a widget, based on the reasoning that dealing with a giant VBO isn't worth it.
- Use a single VBO per geometry type (e.g. a quad) and transform it via (presumably) a shader.
- Use QT (not an option, but it was suggested quite frequently).
- Ignore the problem altogether by relying on OpenGL's compat-mode until absolutely forced to do otherwise. After plowing through a number of straight-OpenGL GUI libraries this appears to be the most popular, albeit unspoken, solution. I'd really prefer to forgo this as I'd like to avoid as much deprecated functionality as possible, but I'm open to an argument to the contrary.Is there a general guideline for which is preferred or, in lieu of that, is there an alternate preferred method for using VBOs in GUIs?
I'm not using C/C++ currently but advice, examples, or "look at" libraries in any language are fine. Any help is greatly appreciated.