Original Post
Since this is my first attempt at making a rendering engine, I sat and thought to myself how to begin the design, and I decided that I will more than likely want to be able to try many different things just to get the hang of all these techniques, so this is what I came up with... Just tell me if and why you approve or disapprove and I would be very greatful for the critisism if it helps me scratch a bad design before I put weeks of coding into it.
I am thinking about making a set of classes GraphicsServer and GraphicsClient, the engine would obviously only have one instance of GraphicsServer per app, but it would have many onstances of GraphicsClient after deriving from it other classes such as TerrainSystem, ParticleSystem, SkySytems, LightingSystem etc. The idea is that everything that will control geometry to be rendered could be a potential GraphicsClient, anything from a whole scene to a simple polygon, although for my purposes only the ''systems'' will derive.
Once an instance of a GraphicsClient is created, it will then be registered into the GraphicsServer. Everytime a frame has been updated and is ready to be drawn, the server will send out a call to each of the registered systems telling them that its time to render, the systems then merely have to send back their renderable data, and try to help specify the order it was sent to help the server in sorting it all. After than, the server should theoretically only have send a few opaque objects for the GPU to crunch on, then start sorting the rest of the opaque objects front to back, and then sort the alpha polys back to front, splitting as nessesary, and then send everything for rendering.
Now what I would like to know, if anyone would give me some advice, is "Does My Method Suck?". If it does then why, and what are some of the better alternatives? If it seems to be a good idea then what else could I do to improve on it? If it seems like im missing something either way please let me know.
~Vendayan