Enhancing support with double buffering

Some DCI clients, such as 3-D graphics packages or animation packages, need to build an image as sequence of objects before the final image is displayed. Classic double buffering is defined by having a system buffer for a graphics application to write data to as needed, usually by placing objects in their proper z-order. Once the complete image is built, this data can be transferred to the screen as one operation. This is accomplished with DCI through the use of an offscreen surface.

A DCI client creates a nonvisible offscreen surface. Graphics objects are then written to this surface as required. Once all access to the surface is finished, the DCI client calls the Draw callback to have the DCI provider copy this data to the screen.