0% found this document useful (0 votes)
21 views

Processor Flow Chart

The document describes a 3D graphics system with multiple processes for rendering, loading, and updating. The rendering process draws each frame using primitive objects. The loading process splits terrain loading across threads to improve load time. The updating process sets the simulation time and updates physics, AI, and signals each frame.

Uploaded by

blogeraryan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views

Processor Flow Chart

The document describes a 3D graphics system with multiple processes for rendering, loading, and updating. The rendering process draws each frame using primitive objects. The loading process splits terrain loading across threads to improve load time. The updating process sets the simulation time and updates physics, AI, and signals each frame.

Uploaded by

blogeraryan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

STARTING

PROGRAM

Main(Act.)

Construct Simulator( for Act.)

Construct Viewer3D( for Sim.)

Construct RenderProcess()

Viewer3D.Configure()

Construct LoaderProcess()

Construct UpdaterProcess()

Viewer3D.Run()

RenderProcess.Run()

RenderProcess
( XNA Game Class )
RenderProcess.Initialize()

Materials.Initialize()

Viewer3D.Initialize() Improving Load Time STARTING


TerrainDrawer.Load() could benefit from 3D GRAPHICS
Viewer3D.LoadPrep() additional multiprocessing. It is CPU limited
(vs Disk limited ) and it shouldn’t be too hard to
SYSTEM
Viewer3D.Load() split the loading task off into multiple processor
TerrainDrawer.Load() threads, one for each tile.
SceneryDrawerLoad()
TrainDrawerLoad()
LoaderProcess.Run()
UpdaterProcess.Run()
LoaderProcess

UpaterProcess
RenderProcess.Draw()

UserInput.Update()
Sets Time – RealTime and ClockTime
RenderFrame
UpdaterProcess.Update()
Simulator.Update()
FRAME 1 - physics
- ai
Draws Nothing - signals

RenderProcess.Draw() Viewer3D.Handle UserInput()


- camera
- player loco
- game control

FRAME 2
Must wait for the Viewer3D.PrepareFrame()
renderframe data before it - camera
can begin to draw. - sky
- terrain
- scenery
- trains
- info

RenderFrame

UpdaterProcess.Update() Viewer3D.LoaderPrep()
- terrain
- scenery
RenderFrame - trains
Camera and Train Locations
RenderProcess.Draw() REPEATS EACH FRAME

RenderFrame.Draw() Viewer3D.Load()
Simulator.Update()
- physics
For each Primitive … - TerrainDrawerLoad()
- ai
- signals
Material.Render()
RenderPrimitive.Draw()
- SceneryDrawerLoad()

Material.Render()
RenderPrimitive.Draw()
- TrainDrawerLoad()
Viewer3D.Handle UserInput() HandleUserInput only runs
Material.Render() - camera when RenderProcess signals
RenderPrimitive.Draw() - player loco new input is ready.
- game control
Material.Render()
RenderPrimitive.Draw()

Material.Render() Viewer3D.PrepareFrame()
- camera 100 mS
RenderPrimitive.Draw()
- sky
Material.Render() - terrain
- scenery
RenderPrimitive.Draw()
- trains
Material.Render() - info
RenderPrimitive.Draw()

Material.Render()
RenderPrimitive.Draw()
.
.
.

Shape File Additions/Deletions


Viewer3D.LoaderPrep()
- terrain LoaderPrep runs every 100 mS
RenderFrame - scenery or when data is available
- trains
List of Camera and Train Locations
primitives

Normally UpdaterProcess
will be waiting for
RenderProcess.Draw() RenderProcess.
HandleUser
Input runs UserInput.Update()
every 30 ms

UpdaterProcess.Update() RenderFrame

You might also like