Optimization
Scene
Graphs
By itself, OpenGL has no way of knowing if an object is visible or
not.
As a result, every object in the database is sent to the graphics
card for rendering.
When arranged in a scene graph, parts of the scene can be culled
State
Management
Each OpenGL state change, such as texturing and lighting
properties, must be communicated to the graphics card.
If state changes are analyzed and aggregated then the graphics
card can work more efficiently.
Model
Loaders
Native OpenGL does not offer a means of organizing polygons, graphics
states, and textures into an aggregate.
This aggregate is commonly known as a 3D Model.
Modeling packages, such as Maya, produce 3D models and the
format can be converted for use by almost any other modeling package.
Model loaders can reorganize the model data to reduce the burden
on the graphics card.
Complete models, their textures, and their material properties can
also be cloned, or referenced, for reuse in other parts of the scene.
This can greatly reduce the amount of memory required on both the
computer and the graphics card.
Multiprocessing
Most interactive real-time graphics do some level of application
processing that involves reading the input devices and changing the
scene.
By breaking the rendering of each scene into an application, cull,
and draw process, the computer can optimize its resources.
The draw processing stage involves turning the scene graph into
OpenGL calls and passing them to the graphics card.
Instead of waiting for the graphics card to render the scene, the
computer can begin processing the application processing for the next frame.
Once the application processing has been completed for a frame,
the cull processing can prune the scene graph.
And, instead of waiting for the cull processing to
finish, the application process can begin processing the next frame.
As a result, the effective frame rate can be reduced to the time
required for the application, cull, or draw processing stage whichever is
longest.
OpenGL
Performer
The first graphic library to incorporate scene graphs, state
management, model loaders, and multiprocessing.
Most of these features are now standard in graphics libraries
including those used by DirectX and Sony.
Uses data structures to organize and optimize the generation of
OpenGL instructions to the graphics card.