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


Структура DDPIXELFORMAT (ksmedia.h)

Структура DDPIXELFORMAT описывает формат пикселя объекта DirectDrawSurface.

Синтаксис

typedef struct _DDPIXELFORMAT {
  DWORD dwSize;
  DWORD dwFlags;
  DWORD dwFourCC;
  union {
    DWORD dwRGBBitCount;
    DWORD dwYUVBitCount;
    DWORD dwZBufferBitDepth;
    DWORD dwAlphaBitDepth;
  };
  union {
    DWORD dwRBitMask;
    DWORD dwYBitMask;
  };
  union {
    DWORD dwGBitMask;
    DWORD dwUBitMask;
  };
  union {
    DWORD dwBBitMask;
    DWORD dwVBitMask;
  };
  union {
    DWORD dwRGBAlphaBitMask;
    DWORD dwYUVAlphaBitMask;
    DWORD dwRGBZBitMask;
    DWORD dwYUVZBitMask;
  };
} DDPIXELFORMAT, *LPDDPIXELFORMAT;

Члены

dwSize

Задает размер в байтах структуры DDPIXELFORMAT. Драйвер должен инициализировать этот элемент перед использованием структуры.

Только версии DirectX 9.0 и более поздних версий. Указывает во входных данных версию среды выполнения Microsoft DirectX, используемую приложением. Этот элемент имеет значение DD_RUNTIME_VERSION, который 0x00000900 для DirectX 9.0 в формате в структуре DD_GETFORMATDATA для запроса D3DGDI2_TYPE_GETFORMAT.

dwFlags

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

Флаг Значение
DDPF_ALPHA Формат пикселя описывает только альфа-поверхность.
DDPF_ALPHAPIXELS Поверхность содержит сведения о альфа-канале в формате пикселей.
DDPF_ALPHAPREMULT Компоненты цвета в пикселе предварительно премулируются альфа-значением в пикселе. Если этот флаг задан, необходимо также задать флаг DDPF_ALPHAPIXELS. Если этот флаг не задан, но флаг DDPF_ALPHAPIXELS задан, компоненты цвета в пиксельном формате не премультируются альфа-символами. В этом случае компоненты цвета должны умножаться на альфа-значение во время выполнения операции альфа-смешивания.
DDPF_BUMPDUDV Данные карты ударов dUdV в формате пикселей допустимы.
DDPF_BUMPHEIGHT Допустимы данные высоты карты ударов в формате пикселей.
DDPF_COMPRESSED Поверхность принимает данные пикселей в указанном формате и сжимает его во время операции записи.
DDPF_D3DFORMAT Указывает запись формата DirectX 8.0 и более поздней версии в списке форматов текстур. Этот флаг не предоставляется приложениям.
DDPF_FOURCC Допустимый код FOURCC.
DDPF_LUMINANCE Допустимы данные Luminance в формате пикселей. Используйте этот флаг для поверхностей, доступных только для света или светячего плюс альфа-поверхности; Затем битовая глубина указывается в элементе dwLuminanceBitCount.
DDPF_LUMINANCEPIXELS Допустимы данные Luminance в формате пикселей. Используйте этот флаг при зависании светимости, например поверхностей бампа. Битовая маска для части яркости пикселя затем указывается в элементе dwBumpLuminanceBitMask.
DDPF_NOVEL_TEXTURE_FORMAT Указывает новый формат поверхности, который среда выполнения может не предоставлять всем приложениям.
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.

dwFourCC

Задает код формата поверхности, включая любой из кодов в D3DFORMAT перечисленном типе. Некоторые коды FOURCC являются частью D3DFORMAT. Дополнительные сведения о D3DFORMAT см. в документации по пакету SDK. Поставщики оборудования также могут определять и предоставлять коды формата, относящиеся к оборудованию.

dwRGBBitCount

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

dwYUVBitCount

Указывает количество битов YUV на пиксель.

dwZBufferBitDepth

Задает глубину бита Z-буфера (8, 16, 24 или 32 бита).

dwAlphaBitDepth

Задает глубину бита альфа-канала.

dwRBitMask

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

dwYBitMask

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

dwGBitMask

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

dwUBitMask

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

dwBBitMask

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

dwVBitMask

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

dwRGBAlphaBitMask

Маска для альфа-канала.

dwYUVAlphaBitMask

Маска для альфа-канала.

dwRGBZBitMask

Маска для канала Z.

dwYUVZBitMask

Маска для канала Z.

Замечания

Среда выполнения DirectX 8.0 и более поздних версий накладывает следующие правила в список операций (op):

  • Для любого формата DS допускается только один endian-ness (большой или маленький), например D15S1 или S1D15, не независимо от других битов.

  • Список должен содержать только D3DFORMAT_OP_DISPLAYMODE для одного формата 16bpp (например, он не должен перечислять 5:5:5 и 5:6:5).

  • Список не должен содержать альфа-форматы с набором D3DFORMAT_OP_DISPLAYMODE или D3DFORMAT_OP_3DACCELLERATION.

  • Флаг D3DFORMAT_OP_3DACCELLERATION можно задать только при установке флага D3DFORMAT_OP_DISPLAYMODE.

Если драйвер поддерживает блокировку D16, он должен сообщать D3DFMT_D16_LOCKABLE в списке опов; в противном случае он должен сообщать D3DFMT_D16.

Драйверы, поддерживающие мультисамплинг, должны заполнить MultiSampleCaps в форматах глубины и набора элементов, для которых можно поддерживать многофакторную проверку. Это позволяет среде выполнения определить, поддерживает ли драйвер многосамплинг для сочетаний форматов целевого объекта отрисовки и Z буферов. Дополнительные сведения об ограничениях, связанных с многосамплингом stretch blt, см. в описании D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE крышки в растровых крышках, содержащихся в структуре D3DCAPS8 в документации по пакету SDK.

Перечисленный тип D3DMULTISAMPLE_TYPE, определенный в d3d8types.h, используется при настройке битов в wFlipMSTypes и wBltMSTypes. Чтобы указать поддержку определенного количества выборок на пиксель, просто логически сместите значение 1 по соответствующему значению из перечисленного типа D3DMULTISAMPLE_TYPE меньше 1 и ИЛИ в соответствующее поле (wFlipMSTypes и wBltMSTypes).

Например, если драйвер поддерживает два и четыре выборки на пиксель при перевернутом (полноэкранном режиме) и четыре образца на пиксель при перерезке (режиме окна) на X8R8G8B8 поверхности будет отображаться следующая запись в списке форматов поверхности.

DDPIXELFORMAT ddpf;
ZeroMemory(&ddpf, sizeof(ddpf));
ddpf.dwSize       = sizeof(DDPIXELFORMAT);
ddpf.dwFlags      = DDPF_D3DFORMAT;
ddpf.dwFourCC     = D3DFMT_X8R8G8B8;
ddpf.dwOperations = D3DFORMAT_OP_DISPLAYMODE |
                    D3DFORMAT_OP_3DACCELERATION;
ddpf.MultiSampleCaps.wFlipMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1))
                                  | (1 << (D3DMULTISAMPLE_2_SAMPLES âˆ' 1));
ddpf.MultiSampleCaps.wBltMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1));

Не обязательно указывать 1 << (D3DMULTISAMPLE_NONE – 1) при форматах отчетов. Предполагается, что любой формат, который сообщается, также можно использовать без многофакторной обработки. Если оборудование поддерживает многофакторную отрисовку с помощью z-буфера, сообщаемые форматы z-буфера, также должны включать поддерживаемые примеры на пиксели.

Требования

Требование Ценность
заголовка ksmedia.h (включая Ddraw.h)