That's mostly how it works. Every object is called from the CPU to be drawn on the GPU. You can optimise this by batching objects into a single call but it's all the same concept. (not sure if this was the part you were unsure about though )I was unsure if that was definitely the way it was done and also unsure how it usually gets implemented.
I can think of 3 ways to have the vertices passed onto the graphics class for drawing. Two are terrible, but I wanted to check if there were other ways to do it that I wasn't thinking of.