Skip to main content
gamedev.net
🔒 Locked

Rendering Architecture!

Started by uncutno Jul 20, 2002 at 8:09 AM 2 replies 550+ views
Original Post
uncutno
uncutno
Some questions conserning 3D rendering pipeline: 1: How do you store your meshes? in VertexBuffers only, or in selfmade mesh structures? 2: Where do you store your meshes? in a mesh-manager open for everyone to use, or at place: ( class CBoat includes a boat mesh) 3: If your mesh includes different textures, do you store your mesh as multiple sub meshes, or do you let a algorithm do the splitting job? mesh: //multiple textures sub_mesh: //one texture sub_mesh: //one texture ... 4: When you render a mesh, do you send it to a rendering manager (witch later renders everything) or do you use straight forward (boat_mesh.render funcs inside your code) 5: How (in short terms) is your engine handeling different game parts conserning Rendering? Is this easy to handle? im thinking about for example iy tou want your game to change to night vision, should you then have a change on every part of your simple rendering system, or only one change in your advansed rendering system.. if you know what i mean...
-Anders-Oredsson-Norway-
MatuX
MatuX
Are you asking how to do it or how we do it?
S1CA
S1CA
1. Static meshes go in static VBs, dynamic meshes are stored in memory as-is and put into a dynamic buffer when necessary.


2. A mesh manager.


3. Each "mesh" only has one texture per texture stage it uses. Our 3DS Max exporter performs the splitting up job.


4. We use a "rendering manager" - it allows us to batch by texture and state etc much more easily, and is necessary sometimes for stuff like alpha sorting.


5. Our engine is layered -:

Core: This is the layer which talks to D3D/OpenGL/GX/PS2 etc. Its interface is 100% platform independent, though some of the data passed in can be platform specific (such as pre-swizzled textures).
Anything at all which can be mad platform independent, such as file loading, format coversion, animation etc is NOT done in the core. The core is intended to be as lightweight as possible and as simple to port to a different platform as possible. (The current version of the core is a 50Kb DLL)

World: This layer is 99% platform independent. It contains all the higher level concepts such as "objects", file loading animation, object-object interaction etc

--
Simon O''Connor
Creative Asylum Ltd
www.creative-asylum.com
Simon O'Connor | Technical Director (Newcastle) Lockwood Publishing | LinkedIn | Personal site
uncutno
uncutno
thanks.. :-)
-Anders-Oredsson-Norway-

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.