So, I've been trying to find out the best way to render ~1000 models on screen. I see two general approaches to this. Some people pack their entire scene into a single giant VBO and load that in. I don't understand how you would go about using different MVP matrices for each model, if they are all packed into one VBO.

I saw someone who made one VAO, then had a different VBO for each model. They bound all the VBOs to the VAO, and then just called DrawArrays for each VBO, passing any new attributes between drawing each VBO.

My question is how efficient is this? I have been under the impression that multiple draw calls is a major slowdown, or am I mistaken? I know that binding is also intensive as well.

What would you suggest for someone that needs to achieve what I need?