Поделиться через


Структура DDLOCKOUT (ddkmapi.h)

Структура DDLOCKOUT содержит описание поверхности.

Синтаксис

typedef struct _DDLOCKOUT {
  DWORD ddRVal;
  DWORD dwSurfHeight;
  DWORD dwSurfWidth;
  LONG  lSurfPitch;
  PVOID lpSurface;
  DWORD SurfaceCaps;
  DWORD dwFormatFlags;
  DWORD dwFormatFourCC;
  DWORD dwFormatBitCount;
  union {
    DWORD dwRBitMask;
    DWORD dwYBitMask;
  };
  union {
    DWORD dwGBitMask;
    DWORD dwUBitMask;
  };
  union {
    DWORD dwBBitMask;
    DWORD dwVBitMask;
  };
} DDLOCKOUT, *LPDDLOCKOUT;

Члены

ddRVal

Указывает расположение, в котором Microsoft DirectDraw записывает возвращаемое значение функции DxApi для операций DD_DXAPI_LOCK. Возвращаемый код DD_OK указывает на успех.

dwSurfHeight

dwSurfWidth

Укажите размеры поверхности в пикселях.

lSurfPitch

Указывает расстояние в байтах до начала следующей строки.

lpSurface

Указывает на память поверхности.

SurfaceCaps

Указывает набор флагов, указывающих возможности поверхности. Этот элемент можно задать для одного или нескольких следующих флагов:

Флаг Значение
DDSCAPS_3DDEVICE Эта поверхность может использоваться для трехмерной отрисовки. Приложения могут использовать этот флаг, чтобы убедиться, что устройство, которое может отображаться только в определенной куче, имеет внеэкранные поверхности, выделенные из правильной кучи. Если этот флаг установлен для кучи, поверхность не выделяется из этой кучы.
DDSCAPS_ALLOCONLOAD Память для поверхности не выделяется, пока поверхность не загружается приложением с помощью метода IDirect3Device7::Load.
DDSCAPS_ALPHA Эта поверхность содержит альфа-информацию. Формат пикселя должен запрашиваться, чтобы определить, содержит ли эта поверхность только альфа-информацию или альфа-информацию, переплетаемую с данными цвета пикселей (например, RGBA или YUVA).
DDSCAPS_BACKBUFFER Эта поверхность является задней буфером структуры переворачивания поверхности. Как правило, эта возможность устанавливается методом CreateSurface приложения при использовании флага DDSCAPS_FLIP. Только поверхность, которая непосредственно предшествует DDSCAPS_FRONTBUFFER поверхности, имеет этот набор возможностей. Другие поверхности определяются как задние буферы по присутствию флага DDSCAPS_FLIP, их порядка вложений и отсутствия возможностей DDSCAPS_FRONTBUFFER и DDSCAPS_BACKBUFFER. Если эта возможность отправляется в метод CreateSurface приложения, создается автономный резервный буфер. После вызова этого метода эта поверхность может быть присоединена к переднему буферу, другому заднему буферу или к обоим, чтобы сформировать структуру поверхности перевернутой поверхности. Дополнительные сведения см. в методе AddAttachedSurface в документации по пакету SDK DirectX. DirectDraw поддерживает произвольное количество поверхностей в структуре переворачивания.
DDSCAPS_COMPLEX Описывается сложная поверхность. Сложная поверхность приводит к созданию нескольких поверхностей. Дополнительные поверхности присоединяются к корневой поверхности. Сложная структура может быть уничтожена только путем уничтожения корня.
DDSCAPS_FLIP Эта поверхность является частью структуры перелистывания поверхности. Когда эта возможность передается в метод CreateSurface приложения , создается внешний буфер и один или несколько резервных буферов. DirectDraw задает DDSCAPS_FRONTBUFFER бит на поверхности переднего буфера и DDSCAPS_BACKBUFFER бит на поверхности, соседней с поверхностью переднего буфера. Элемент dwBackBufferCount член структуры DDSURFACEDESC должен иметь значение не менее 1, чтобы вызов метода был выполнен успешно. При создании нескольких поверхностей всегда необходимо задать возможность DDSCAPS_COMPLEX с помощью метода CreateSurface.
DDSCAPS_FRONTBUFFER Эта поверхность является передним буфером структуры переворачивания поверхности. Этот флаг обычно устанавливается методом CreateSurface приложения при установке возможности DDSCAPS_FLIP. Если эта возможность отправляется в метод CreateSurface, создается автономный внешний буфер. Эта поверхность не будет иметь возможности DDSCAPS_FLIP. Его можно подключить к другим буферам спины, чтобы сформировать структуру переверки с помощью метода AddAttachedSurface.
DDSCAPS_HWCODEC Эта поверхность должна иметь возможность распаковки потока к нему оборудованием.
DDSCAPS_LIVEVIDEO Эта поверхность должна иметь возможность получать видео в реальном времени.
DDSCAPS_LOCALVIDMEM Эта поверхность существует в истинной, локальной памяти отображения, а не нелокальной памяти отображения. Если этот флаг указан, DDSCAPS_VIDEOMEMORY также необходимо указать. Этот флаг нельзя использовать с флагом DDSCAPS_NONLOCALVIDMEM.
DDSCAPS_MIPMAP Эта поверхность является одним уровнем MIP-карты. Эта поверхность будет присоединена к другим DDSCAPS_MIPMAP поверхностям для формирования MIP-карты. Это можно сделать явно, создав ряд поверхностей и присоединив их с помощью метода AddAttachedSurface приложения AddAttachedSurface или неявно с помощью метода CreateSurface CreateSurface. Если эта возможность задана, DDSCAPS_TEXTURE также необходимо задать.
DDSCAPS_MODEX Эта поверхность — это поверхность 320x200 или 320x240 mode X.
DDSCAPS_NONLOCALVIDMEM Эта поверхность существует в нелокальной памяти отображения, а не в истинной локальной памяти отображения. Если этот флаг указан, то также необходимо указать флаг DDSCAPS_VIDEOMEMORY. Это нельзя использовать с флагом DDSCAPS_LOCALVIDMEM.
DDSCAPS_OFFSCREENPLAIN Эта поверхность является любой внеэкранной поверхностью, которая не является наложением, текстурой, z-буфером, фронт-буфером, задней буфером или альфа-поверхностью. Он используется для идентификации простых поверхностей.
DDSCAPS_OPTIMIZED В настоящее время не реализовано.
DDSCAPS_OVERLAY Эта поверхность представляет собой наложение. Он может быть или не виден напрямую в зависимости от того, наложен ли он в настоящее время на основную поверхность. DDSCAPS_VISIBLE можно использовать для определения того, накладывается ли она в данный момент.
DDSCAPS_OWNDC Эта поверхность будет иметь связь контекста устройства (DC) в течение длительного периода.
DDSCAPS_PALETTE Этот драйвер устройства позволяет создавать и присоединять к этой поверхности уникальные объекты DirectDrawPalette.
DDSCAPS_PRIMARYSURFACE Поверхность является основной поверхностью. Он представляет то, что видно пользователю в данный момент.
DDSCAPS_PRIMARYSURFACELEFT Эта поверхность является основной поверхностью левого глаза. Он представляет то, что видно левому глазу пользователя в данный момент. При создании этой поверхности поверхность с возможностью DDSCAPS_PRIMARYSURFACE представляет то, что видно правым глазом пользователя.
DDSCAPS_STANDARDVGAMODE Эта поверхность является стандартной поверхностью режима VGA, а не поверхностью ModeX. Этот флаг нельзя использовать в сочетании с флагом DDSCAPS_MODEX.
DDSCAPS_SYSTEMMEMORY Эта память поверхности была выделена в системной памяти.
DDSCAPS_TEXTURE Эта поверхность может использоваться в качестве трехмерной текстуры. Он не указывает, используется ли поверхность для этой цели.
DDSCAPS_VIDEOMEMORY Эта поверхность существует в памяти отображения.
DDSCAPS_VIDEOPORT Эта поверхность может получать данные из аппаратного видеопорта.
DDSCAPS_VISIBLE Изменения, внесенные на эту поверхность, сразу же видны. Он всегда устанавливается для основной поверхности, а также для наложений при наложении и сопоставлении текстур при их текстуре.
DDSCAPS_WRITEONLY Доступ к поверхности разрешен только для записи. Доступ на чтение из поверхности может создать общую ошибку защиты (GPF), но результаты чтения из этой поверхности не являются значимыми.
DDSCAPS_ZBUFFER Эта поверхность — это z-буфер. Z-буфер содержит сведения, которые нельзя отобразить. Вместо этого он содержит сведения о битовой глубине, которые используются для определения видимых пикселей и которые скрыты.

dwFormatFlags

Задает набор необязательных флагов элементов управления. Этот элемент можно задать для сочетания следующих флагов:

Флаг Значение
DDPF_ALPHA Формат пикселя описывает только альфа-поверхность.
DDPF_ALPHAPIXELS Поверхность содержит сведения о альфа-канале в формате пикселей.
DDPF_ALPHAPREMULT Зарезервировано для использования системы.
DDPF_BUMPDUDV Данные карты ударов dUdV в формате пикселей допустимы.
DDPF_BUMPLUMINANCE Допустимы данные светимости в формате пикселей. Этот флаг используется при висячести с поверхностей бампа; Битовая маска для части пикселя, а затем указывается элементом dwBumpLuminanceBitCount элемента DDPIXELFORMAT.
DDPF_COMPRESSED Поверхность принимает данные пикселей в указанном формате и сжимает его во время операции записи.
DDPF_FOURCC Допустимый код FOURCC.
DDPF_LUMINANCE Допустимы данные Luminance в формате пикселей. Этот флаг используется только для яркости или яркости, а также альфа-поверхностей; Затем битовая глубина указывается элементом dwLuminanceBitCount член структуры DDPIXELFORMAT.
DDPF_PALETTEINDEXED1 Поверхность имеет 1-разрядный индексированный цвет.
DDPF_PALETTEINDEXED2 Поверхность имеет 2-разрядный индексированный цвет.
DDPF_PALETTEINDEXED4 Поверхность имеет 4-разрядный индексированный цвет.
DDPF_PALETTEINDEXED8 Поверхность имеет 8-разрядный индексированный цвет.
DDPF_PALETTEINDEXEDTO8 Поверхность имеет 1-, 2-или 4-разрядную цветовую индексированную на 8-разрядную палитру.
DDPF_RGB Допустимы данные RGB в структуре формата пикселей.
DDPF_RGBTOYUV Поверхность принимает данные RGB и преобразует его во время операции записи в данные YUV. Формат записываемых данных содержится в структуре формата пикселей. Установлен флаг DDPF_RGB.
DDPF_STENCILBUFFER Поверхность содержит сведения о наборе элементов вместе с данными Z.
DDPF_YUV Допустимы данные YUV в структуре формата пикселей.
DDPF_ZBUFFER Формат пикселя описывает только поверхность z-буфера.
DDPF_ZPIXELS Поверхность находится в формате RGBZ.

dwFormatFourCC

Задает код FOURCC. Дополнительные сведения о кодах FOURCC см. в документации по пакету SDK DirectX.

dwFormatBitCount

Указывает количество битов на пиксель (4, 8, 16, 24 или 32) данных RGB или YUV.

dwRBitMask

Задает маску для красных битов.

dwYBitMask

Задает маску для битов Y.

dwGBitMask

Задает маску для зеленых битов.

dwUBitMask

Задает маску для битов U.

dwBBitMask

Задает маску для синих битов.

dwVBitMask

Задает маску для виртуальных битов.

Требования

Требование Ценность
заголовка ddkmapi.h (include Ddkmapi.h)

См. также

DD_DXAPI_LOCK

DxApi