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