В DirectDraw поверхностью (surface) называется область памяти, предназначенная для хранения изображений. Используемая поверхностью память может быть расположена как на видеокарте, так и в системной памяти. Однако отображаться на экране могут только те поверхности, которые размещены в памяти видеокарты.
Поверхности представлены интерфейсом DirectDrawSurface и могут быть созданы функцией CreateSurface() интерфейса DirectDraw. Функции CreateSurface() передаются аргументы, которые задают тип, размер и возможности создаваемой поверхности.
Существует три основных типа поверхностей: переключаемые поверхности (flipping surfaces), внеэкранные поверхности (off-screen surfaces) и Z-буферы (Z-buffers). Переключаемые поверхности используются для выполнения переключения страниц. Первичный и вторичный буфер в нашем коде будут представлять собой переключаемые поверхности. Внеэкранные поверхности используются для хранения изображений, таких как фоновые картинки и спрайты, и различных манипуляций с ними. Z-буферы мы обсудим в следующем разделе.