Engine Design (A look at the rendering system)

So I have been quite busy and haven’t had chance to post anything, I’ve spent a lot of time designing and redesigning parts of the engine as well as looking at implementing them. I’ve spent a lot of time specifically designing a content management system that I can use to cache resources and designing how the whole rendering system Is going to work. So here is an overview of the basic understanding behind the rendering system. I may at a later stage post some more detailed information about the design of the engine but I’m not sure exactly how much I want to have free to the public.

Engine Components – In order to understand how the system works I’m going to go over some components in the engine and how they work and interact.

SceneGraph – The Scene Graph in the engine is used to keep track of all objects that have been created as well as passing Objects to the rendered to be rendered. These objects will have components attached that keep of track of which shaders, textures, and meshes to be used.

ContentManager – The content manager handles resources in the system, The scene graph will let the content manager know when an asset needs to be loaded and this will handle this, also through collaborative with the scene graph it’ll try to keep track of when a resource is being used, and when it is no longer being used by any object in the scene, maybe because it has gone out of the render distance or the object has been destroyed, then the content manager will handle the unloading of resources to free up any unnecessary memory being used. When a resource is loaded it’ll create a unique resource ID that will be passed to an object such as a texture so it’ll be able to use this id to associate with the resource that’s been loaded

Ok that’s a very brief overview of whats going on and I believe it gives you an idea of the how the system works, at the moment it is only partially implemented. One reason for this is I’ve redesigned it several times already since I started implementing however which each revision is gets better. Last night I wrote a new class used specifically for handling the loading , unloading and manipulation of images as well as caching the  loaded image for use by the renderer at a later stage. Generally the class interacts with the Content Manager although It’ll work perfectly fine on its own as-well.

Thanks for reading as always.

comments

Leave a Reply