Compartilhar via


Creating Complex Surfaces and Flipping Chains

A version of this page is also available for

Windows Embedded CE 6.0 R3

4/8/2010

You can also create complex surfaces. A complex surface is a set of surfaces created with a single call to the IDirectDraw::CreateSurface method.

If the DDSCAPS_FLIP flag is set when you call CreateSurface call, DirectDraw implicitly creates one or more surfaces in addition to the surface explicitly specified.

You manage complex surfaces just like a single surface — a single call to the IDirectDrawSurface::ReleaseDC method releases all surfaces, and a single call to the IDirectDrawSurface::Restore method restores them all.

Complex surfaces are used in flipping chains. Usually, a flipping chain is made of a primary surface and one or more back buffers. The DDSCAPS_FLIP flag indicates that a surface is part of a flipping chain.

Code Example

The following code example demonstrates how to prepare for creating a primary surface flipping chain.

Note

To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.

DDSURFACEDESC ddsd; 
ddsd2.dwSize = sizeof(ddsd); 
 
// Tell DirectDraw which members are valid. 
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; 
 
// Request a primary surface with a single 
// back buffer 
ddsd.ddsCaps.dwCaps = DDSCAPS_FLIP | 
DDSCAPS_PRIMARYSURFACE; 
ddsd.dwBackBufferCount = 1; 

The previous example constructs a double-buffered flipping environment — a single call to the IDirectDrawSurface::Flip method exchanges the surface memory of the primary surface and the back buffer.

If you specify 2 for the value of the dwBackBufferCount member of the DDSURFACEDESC structure, two back buffers are created, and each call to Flip rotates the surfaces in a circular pattern, providing a triple-buffered flipping environment.

For more information, see Flipping Surfaces.