Создайте простую вне экранную поверхность
Создайте простую вне экранную поверхность типа, который мог бы использоваться, чтобы кэшировать растры, которые будут позже составлены для блиттинга. Высота и ширина требуется для всех поверхностей за исключением основной поверхности. Члены в структуре DDSURFACEDESC (ddsd ниже) подготовлены к созданию простой вне экранной поверхности.
DDSURFACEDESC ddsd;
ddsd.dwSize = sizeof( ddsd );
//Tell DDRAW, которые поля имеют силу
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
//Ask для простой off-screen поверхности, установленной по размеру
//100 100 пикселями
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
dwHeight = 100;
dwWidth = 100;
DirectDraw создает эту поверхность в памяти дисплея, если это не будет успешно, тогда поверхность будет создана в памяти системы. Если поверхность была создана, используйте флажки DDSCAPS_SYSTEMMEMORY или DDSCAPS_VIDEOMEMORY в dwCaps, чтобы определить где, в памяти системы или памяти дисплея, соответственно. Ошибка возвращается, если поверхность не может быть создана в определенном расположении.
DirectDraw также учитывает создание сложных поверхностей. Сложная поверхность - набор поверхностей, созданных с одиночным обращением к IDirectDraw:: CreateSurface. Если флажок DDSCAPS_COMPLEX установлен в IDirectDraw:: CreateSurface, одна или много неявных поверхностей будут созданы DirectDraw в дополнение к поверхности, явно определенной. Сложные поверхности управляются вместе,одиночное обращение к IDirectDraw::Release разрушит все поверхности в структуре, и одиночное обращение к IDirectDrawSurface::Restore восстановит их все.