Originally Posted by BobMcGee123
In my own project I have a 'Renderer' class which holds pointers to everything that can be drawn. When I want something drawn, I just add a renderable object to the Renderer, and it handles it.
edit:
In my opinion, the Draw() function for each object should not actually draw the object. I think a centralized Renderer should be what actually does the drawing. I set my own engine up that way so that I can cut down on the number of state changes that need to be done in the graphics API that I use. Otherwise, whenever you have each object Draw()ing (heh) itself you need to keep track of what you draw before it and after it and keep track of what settings are on and what settings rae off and blah blah blah, and then you get speed impacted (doing a lot of state changes makes the rendering process go slower esp if you are doing material/texture changes). This comes from personal experience.