OpenGL Renderer - Culling

The Culling Stage

The culling stage is responsible for preparing an ordered list of nodes to render for the drawing stage. These nodes will be updated from the change list generated from the Application Stage, view culled, and state sorted for effecient rendering. This stage feeds its data to the Drawing stage via a thread safe shared que. As objects are placed on this que they can be rendered.

The work of the culling stage is configurable. By default it culls by view to bounding box, then it culls by exact geometry. It then sorts by openGL state and range sorts transparent geometry. Each of these options can be enabled or disabled to change application performance. Applications that are CPU bound may want to disable exact geometry culling to shift more load to the graphics card.

The culling stage will be responsible for marshalling the App and Draw stages. The SGManager will handle these tasks. It will also maintain the change lists/sets of what nodes the application wants to update and will swap them over when appropriate.

public class SGManager {
	public SGManager(int numChannels);
	public void update(UpdateListner ul);
	public void updateBoundsChanged(UpdateListener ul);
	public void appFrameFinished();
	protected void drawFrameFinished(int channel);
Here is how we expect the implementation versions to go:

Implementation 1

Implementation 2 Implementation 3

[ Xj3D Homepage | Xj3D @ Web3d | Screenshots | Dev Releases | Contributors | Getting Started ]
Last updated: $Date: 2004-04-30 04:50:26 $