A term used in Computer Graphics
to describe an system, typically an API
that stores the information
that is to be rendered
in some sort of data structure, usually a scene graph
. It is usually used to distinguish it from immediate mode
systems. In practice, retained
mode systems are implemented using immediate mode
For example, a retained mode system has a concept of a scene. The scene contains objects. A retained mode system allows you to manipulate the objects in the scene, such as making them larger, moving them around, and so on. There are a few special objects, e.g. the camera, but in many regards they are the same as other objects. There may also be animation and reactive objects in the scene, so that pressing a virtual button in the scene causes some other part of the scene to change.
The beauty of retained mode systems is that once you've set up the scene, everything takes care of itself. You don't have to do anything special to view the scene; you don't need to worry about refreshing the screen, or animating it, or doing object interactions or anything. This is in stark contrast to immediate mode, where you have to do everything yourself: There's no concept of a scene in immediate mode, only of a pipeline you shove polygons down. The scene stuff has to be implemented by the programmer.
Examples of retained mode APIs include: OpenInventor, Java3D and Direct3D retained mode. (Aside: Direct3D implements both retained mode and immediate mode APIs).