Структура 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) |