Offscreen Surfaces (sprites)

a bunch of bitmaps that can be drawn to the screen

DD supports blitter (block image transfer) for high speed drawing.

 

// create surfaces

DDSURFACEDESC2 ddsd;

LPDIRECTDRAWSURFACE7 lpwork;     //backSurf

 

memset(&ddsd,0,sizeof(ddsd)); // clear struct

 

ddsd.dwSize = sizeof(ddsd);

ddsd.dwFlags = DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT;

ddsd.dwWidth = width;  // set height & width of image

ddsd.dwHeight = height;

ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; //vram

 

if (lpdd->CreateSurface(&ddsd,&lpwork,NULL) != DD_OK)

    // ERROR

 

// to create the surface in system memory instead

ddsd.ddsCaps.dwCaps =

      DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY;