I know that all of these questions depend obviously on the graphics card being used, speed of the processor, etc.... but I guess I'm a little confused.
I'm trying to understand VAO's and VBO's and how I should be using them. How many VBO's/VAO's can an average card handle? Or better yet, is there a range for the number of average calls to the card per frame that are acceptable?
The thing is I'm working up towards game programming. I'm trying to understand how exactly I should work VBO's to minimize the number of calls to the graphics card while still drawing all of the objects. I think I need an example of code to help me understand instancing.
I'd like to point to minecraft as an example (I'm not trying to build a minecraft game but it's a good example to understand instancing I think): How exactly would it store the information for every block? Would each block hold its own VBO with the vertex, texture, normal, and locational data, or would there be a single VBO that holds the vertex information (shape), normal data, etc.... with each individual block only holding the 'different' information such as textures, etc...?
Can an average graphics card handle thousands of VBO's?
Here is how I imagine it to work (please let me know if I'm being dumb):
1. a static class array holds vertex/normal data
2. the texture would be pulled from a cached VBO based on the tile type (for instance a grass tile or a stone tile) ***each individual instance of the block class would hold no VBO and would only pull info from shared VBO's
3. Each instance of the block class would hold an X,Y,Z coordinate, information on which block type it is, it's characteristics, etc....
4. When rendering (using a for loop):
a. Load Identity
b. Translate according to instance's x,y,z coords
c. Rotate object according to instance's rotate info
d. render block with common VBO's
e. move to next block
Is the above process correct, or would it be better/faster to just have each individual block to have its own VBO and just run a for/next to go through and render them?
I'm not sure if my question fully makes sense so please ask me if you need clarification.