Retained mode in computer graphics is a major pattern of
API design in graphics libraries, in which
* the
graphics library
A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and run ...
, instead of the
client
Client(s) or The Client may refer to:
* Client (business)
* Client (computing), hardware or software that accesses a remote service on another computer
* Customer or client, a recipient of goods or services in return for monetary or other valuable ...
, retains the scene (complete
object model of the
rendering primitive
This is a glossary of terms relating to computer graphics.
For more general computer hardware terms, see glossary of computer hardware terms.
0–9
A
B
...
s) to be
rendered and
* the
client
Client(s) or The Client may refer to:
* Client (business)
* Client (computing), hardware or software that accesses a remote service on another computer
* Customer or client, a recipient of goods or services in return for monetary or other valuable ...
calls into the
graphics library
A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and run ...
do not directly cause actual rendering, but make use of extensive indirection to resources, managed thus ''retained'' by the
graphics library
A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and run ...
.
It does not preclude the use of
double-buffering.
Immediate mode is an alternative approach. Historically, retained mode has been the dominant style in
GUI libraries;
however, both can coexist in the same library and are not necessarily exclusionary in practice.
Overview
In retained mode the
client
Client(s) or The Client may refer to:
* Client (business)
* Client (computing), hardware or software that accesses a remote service on another computer
* Customer or client, a recipient of goods or services in return for monetary or other valuable ...
calls do not directly cause actual rendering, but instead update an
abstract internal model (typically a list of objects) which is maintained within the library's data space. This allows the library to optimize when actual rendering takes place along with the processing of related objects.
Some techniques to optimize rendering include:
* managing
double buffering
In computer science, multiple buffering is the use of more than one buffer to hold a block of data, so that a "reader" will see a complete (though perhaps old) version of the data, rather than a partially updated version of the data being create ...
* treatment of
hidden surfaces by
backface culling/
occlusion culling (
Z-buffering)
* only transferring data that has changed from one frame to the next from the application to the library
Example of coexistence with immediate mode in the same library is
OpenGL
OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
. OpenGL has immediate mode functions that can use previously defined server side objects (
textures,
vertex buffer
This is a glossary of terms relating to computer graphics.
For more general computer hardware terms, see glossary of computer hardware terms.
0–9
A
B
...
s and
index buffer
This is a glossary of terms relating to computer graphics.
For more general computer hardware terms, see glossary of computer hardware terms.
0–9
A
B
...
s,
shaders, etc.) without resending unchanged data.
Examples of retained mode rendering systems include
Windows Presentation Foundation,
SceneKit
SceneKit, sometimes rendered Scene Kit, is a 3D graphics application programming interface (API) for Apple Inc. platforms written in Objective-C. It is a high-level framework designed to provide an easy-to-use layer over the lower level APIs like O ...
on macOS,
and
PHIGS.
See also
*
Compositing window manager
A compositing window manager, or compositor, is a window manager that provides applications with an off-screen data buffer, buffer for each window. The window manager Compositing, composites the window buffers into an image representing the screen ...
*
Scene graph
References
{{DEFAULTSORT:Retained Mode
Computer graphics
3D computer graphics