Структура 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
Указывает набор флагов, указывающих необязательные флаги элементов управления. Этот член является побитовой или любого из следующих значений:
Flag | Значение |
---|---|
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-plus-alpha; Затем битовая глубина указывается в элементе dwLuminanceBitCount . |
DDPF_LUMINANCEPIXELS | Допустимы данные о яркости в формате пикселей. Используйте этот флаг при отключении яркости, например поверхностей карты бампов. Затем битовая маска для части яркости пикселя указывается в элементе 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 и более поздних версий накладывает следующие правила на список операций.
Допускается только один endian-ness (большой или маленький) для любого формата DS, например 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.
Драйверы, поддерживающие multisampling, должны заполнять multiSampleCaps в форматах Depth/Stencil, для которых может поддерживаться мультисамплинг. Это позволяет среде выполнения определить, поддерживает ли драйвер несколько выборок для сочетаний форматов целевого объекта отрисовки и буфера 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) |