Rendering lots of objects

I’m wanting to render multiple objects on a screen and in some cases several of each object. I’m not sure what the best method of doing this is and was wanting some advice. The only way I can think of doing this is having X Command Buffers for each model I want to render and store all draw requests for that model inside, then submit them when I require the draws… Would this work or is there a better solution?

Why would you want or need separate command buffers for each model? Can’t you just have a function that issues the rendering commands needed for each rendering of a model?

Ahh, I did not know this was possible, When I’ve been following peoples tutorials/examples, they seem to use different buffers for each buffer. How I’ve managed it is by setting up all the draw commands into one command buffer, then passing the required uniform data via a dynamic uniform buffer. Would you say this is a reasonable way of doing this?

I would use storage buffer instead of uniform buffer.
Maximum size for uniform buffer is 64 kB ( at least on my GPU ), while maximum size for a storage buffer is 2047 MB.
So for example, if you want to provide a 4x4 matrix ( 64 bytes ) for each object in uniform buffer
then you are able to send information about 1024 objects at best.

Besides storage buffer does not have to declare its size in a shader :

layout (std430,binding = 0) readonly buffer ModelMatrices
{
mat4 modelMatrix[];
};

while uniform buffer must do it :

layout (binding = 0) uniform ModelMatrices
{
mat4 modelMatrix[1024];
} matrices;