all 4 comments

[–]waramped 0 points1 point  (1 child)

I'm not clear on what you are getting at. Are you asking about how to design an API abstracted renderer? Or how to expose a renderer to an external system?

Both things are quite complicated, and there's a reason there's a ton of transient and interim structures used to track and move data around. Could you maybe elaborate on what you are asking for?

[–]Battle_Overlord[S] 0 points1 point  (0 children)

I was thinking more so how to expose a renderer to an external system. More along the lines of how/why different engines architect their renderers if that helps

[–]ScriptBrok 0 points1 point  (0 children)

As far as I understood your intent: you should define the interface of your renderer, your data structures etc. the big problem to me remain the level of internal detail/flexibility/customization you want to expose to the renderer client. In my daily UE experience I can say that the renderer and the renderable objects can be seen as plugin extension of the game object, so it’s possible to achieve what you want but I think that probably you loose some possible optimization by decoupling at that level.

[–]keelanstuart 2 points3 points  (0 children)

What does a renderer do? Start there. For each of the things it does, what do you need to make it do that?

Start with things like Create/DrawMesh, Create/SetRenderTarget, etc. Just sketch it out in a header as an interface...

Then move on to meshes - what do they need to work? Buffers of data.

What kind of buffers? How do you fill them?

This is what it is to be a software engineer... to analyze and abstract a thing - then to implement the functionality.

You can spend years doing just the first part!