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 systems.

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).

Log in or register to write something here or to contact authors.