Archived

This topic is now archived and is closed to further replies.

pr0teus

Engine Structure

Recommended Posts

Hello, I was wondering what the general structure for a 3d engine (indoor) is. What I mean is, what kind of classes do I need so I can make a reusable engine. I''ve already have all of the basics, like texture mapping, fog, lighting, blending, etc. down and now I want to do something real, like a game, not just little demos. By the way, I use OpenGL, so if there are links to anything specific to what I want using that API, it''d be great. Thanks, Ben

Share this post


Link to post
Share on other sites
Hi!

I won''t tell you what classes you''ll need, since that is too specific to start out with, when developing an engine.

The most important part of your engine will be the step where you do your visibility processing ... this calls for some heavy decisions in terms of how your indoor-level will be stored in memory. Some options here are BSP trees with a PVS (a la Quake), portals, octrees (yes, even for indoor they can be useful).

Then, I''d separate your engine into two parts, visibility processing and rendering. Basically, the visibility processor determines a bunch of triangles to render from your world structure. You throw these to the render. The renderer will accept the triangles and already sort them based on material and shading characteristics (a hashing strategy can be great here, or let each triangle know where it should go in the renderer (hard to explain, but possible)). Then (again) you have several options as to how the renderer can work. It can wait for all the triangles and then just traverse the number of materials and draw them, or it could wait until a material has accumulated enough triangles and then just flush that rendering buffer. These techniques can also be combined with vertex arrays/buffers and other useful things.

Hope this helps a bit,

MK42

Share this post


Link to post
Share on other sites