Графика для Windows средствами DirectDraw | страница 17
и DirectDrawSurface3 не слишком важны. В оставшейся части книги термин интерфейс DirectDrawSurface будет обозначать все три интерфейса, если при этом не возникает двусмысленности.
Самый большой из всех интерфейсов DirectDraw, DirectDrawSurface, позволяет копировать и стирать содержимое поверхности, а также напрямую работать с ним из программы. В общей сложности он поддерживает 36 функций, перечисленных ниже (в алфавитном порядке):
• AddAttachedSurface()
• AddOverlayDirtyRect()
• Blt()
• BltBatch()
• BltFast()
• DeleteAttachedSurface()
• EnumAttachedSurfaces()
• EnumOverlayZOrders
• Flip
• GetAttachedSurface()
• GetBltStatus()
• GetCaps()
• GetClipper()
• GetColorKey()
• GetDC()
• GetDDInterface()
• GetFlipStatus()
• GetOverlayPosition()
• GetPalette()
• GetPixelFormat()
• GetSurfaceDesc()
• IsLost()
• Lock()
• PageLock()
• PageUnlock()
• ReleaseDC()
• Restore()
• SetClipper()
• SetColorKey()
• SetOverlayPosition()
• SetPalette()
• SetSurfaceDesc()
• Unlock()
• UpdateOverlay()
• UpdateOverlayDisplay()
• UpdateOverlayZOrder()
Мы начнем с четырех функций, с помощью которых можно получить информацию о самой поверхности:
• GetCaps()
• GetPixelFormat()
• GetSurfaceDesc()
• SetSurfaceDesc()
Функция GetCaps() по аналогии с одноименной функцией интерфейса DirectDraw заполняет структуру информацией о том, какие возможности поддерживаются данной поверхностью. В частности, в нее заносятся сведения о том, является ли данная поверхность первичной или внеэкранной, и где она находится — в системной или видеопамяти.
Функция GetPixelFormat() особенно важна при работе с поверхностями форматов High и True Color, поскольку формат пикселей может зависеть от видеокарты. Функция возвращает маски, которые определяют способ хранения отдельных цветовых составляющих.
Функция GetSurfaceDesc() возвращает описание поверхности. Сведения включают ширину и высоту поверхности, а также глубину пикселей. В описание поверхности также входит формат ее пикселей (в том же виде, что и получаемый с помощью функции GetPixelFormat()).
Функция SetSurfaceDesc() (появилась только в DirectX 5 и поддерживается только интерфейсом DirectDrawSurface3) позволяет задать значения некоторых атрибутов поверхности. Например, с ее помощью можно выбрать тип памяти, в которой должна находиться поверхность. Данная функция помогает реализовать нестандартную схему управления поверхностями.
Интерфейс DirectDrawSurface поддерживает три функции, предназначенные для выполнения блиттинга: