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


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

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

Примечание Вместо того, чтобы использовать эту структуру для декодирования файлов с помощью формата файлов DirectDraw Surface (DDS) (DDS), следует использовать альтернативную структуру, которая не зависит от Ddraw.h. Дополнительные сведения об альтернативных структурах для DDS см. в разделе DDS.
 

Синтаксис

typedef struct _DDPIXELFORMAT {
  DWORD dwSize;
  DWORD dwFlags;
  DWORD dwFourCC;
#if ...
  union {
    DWORD dwRGBBitCount;
    DWORD dwYUVBitCount;
    DWORD dwZBufferBitDepth;
    DWORD dwAlphaBitDepth;
    DWORD dwLuminanceBitCount;
    DWORD dwBumpBitCount;
    DWORD dwPrivateFormatBitCount;
  } DUMMYUNIONNAMEN;
#elif
  union {
    DWORD dwRBitMask;
    DWORD dwYBitMask;
    DWORD dwStencilBitDepth;
    DWORD dwLuminanceBitMask;
    DWORD dwBumpDuBitMask;
    DWORD dwOperations;
  } DUMMYUNIONNAMEN;
#elif
  union {
    DWORD dwGBitMask;
    DWORD dwUBitMask;
    DWORD dwZBitMask;
    DWORD dwBumpDvBitMask;
    struct {
      WORD wFlipMSTypes;
      WORD wBltMSTypes;
    } MultiSampleCaps;
  } DUMMYUNIONNAMEN;
#elif
  union {
    DWORD dwBBitMask;
    DWORD dwVBitMask;
    DWORD dwStencilBitMask;
    DWORD dwBumpLuminanceBitMask;
  } DUMMYUNIONNAMEN;
#else
  union {
    DWORD dwRGBAlphaBitMask;
    DWORD dwYUVAlphaBitMask;
    DWORD dwLuminanceAlphaBitMask;
    DWORD dwRGBZBitMask;
    DWORD dwYUVZBitMask;
  } DUMMYUNIONNAMEN;
#endif
} DDPIXELFORMAT;

Члены

dwSize

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

dwFlags

Следующие флаги описывают необязательные элементы управления для этой структуры.

DDPF_ALPHA

Формат пикселей описывает поверхность, доступную только для альфа-канала.

DDPF_ALPHAPIXELS

На поверхности содержатся сведения о альфа-канале в формате пикселей.

DDPF_ALPHAPREMULT

Поверхность использует предварительно заданный альфа-формат. То есть компоненты цвета в каждом пикселе предварительно замедляются альфа-компонентом.

DDPF_BUMPLUMINANCE

Данные о яркости в формате пикселей допустимы, а член dwLuminanceBitMask описывает допустимые биты яркости для поверхности только для яркости или альфа-яркости.

DDPF_BUMPDUDV

Допустимы данные на схеме бамп-карты в формате пикселей. Сведения о схеме bump-map содержатся в элементах dwBumpBitCount, dwBumpDuBitMask, dwBumpDvBitMask и dwBumpLuminanceBitMask .

DDPF_COMPRESSED

Поверхность принимает пиксельные данные в указанном формате и сжимает их во время операции записи.

DDPF_D3DFORMAT

Указывает запись возможности форматирования DirectX 8.0 и более поздних версий в списке форматов текстур. Этот флаг не предоставляется приложениям и определен в Ddrawi.h.

DDPF_FOURCC

Член dwFourCC является допустимым и содержит код FOURCC, описывающий формат пикселей, отличный от RGB.

DDPF_LUMINANCE

Формат пикселей описывает поверхность только для яркости или альфа-яркости.

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_ZBUFFER.

DDPF_YUV

Допустимы данные YUV в структуре формата пикселей.

DDPF_ZBUFFER

Формат пикселей описывает поверхность z-буфера.

DDPF_ZPIXELS

Поверхность содержит информацию z в пикселях.

dwFourCC

Код FourCC.

DUMMYUNIONNAMEN

DUMMYUNIONNAMEN.dwRGBBitCount

Бит RGB на пиксель (4, 8, 16, 24 или 32).

DUMMYUNIONNAMEN.dwYUVBitCount

Число битов YUV на пиксель (4, 8, 16, 24 или 32).

DUMMYUNIONNAMEN.dwZBufferBitDepth

Битовая глубина Z-буфера (8, 16, 24 или 32).

DUMMYUNIONNAMEN.dwAlphaBitDepth

Битовая глубина альфа-канала (1, 2, 4 или 8) для поверхности, доступной только для альфа-канала (DDPF_ALPHA). Для форматов пикселей, содержащих альфа-данные, чередующиеся с цветными данными (DDPF_ALPHAPIXELS), подсчитайте биты в элементе dwRGBAlphaBitMask , чтобы получить битовую глубину альфа-компонента. Дополнительные сведения об определении глубины альфа-бита см. в разделе Примечания.

DUMMYUNIONNAMEN.dwLuminanceBitCount

Общее количество бит яркости на пиксель. Этот элемент применяется только к поверхностям только для яркости и luminance-alpha.

DUMMYUNIONNAMEN.dwBumpBitCount

Общее количество битов на карту ударов на пиксель в поверхности рельефной карты.

DUMMYUNIONNAMEN.dwPrivateFormatBitCount

Бит на пиксель форматов частных драйверов. Допустимо только в списке форматов текстур и, если задано DDPF_D3DFORMAT.

DUMMYUNIONNAMEN.dwRBitMask

Маска для красных битов.

DUMMYUNIONNAMEN.dwYBitMask

Маска для битов Y.

DUMMYUNIONNAMEN.dwStencilBitDepth

Битовая глубина буфера трафарета. Этот элемент указывает, сколько битов зарезервировано в каждом пикселе z-буфера для сведений о наборе элементов (общее число z-битов равно dwZBufferBitDepth минус dwStencilBitDepth).

DUMMYUNIONNAMEN.dwLuminanceBitMask

Маска для битов яркости.

DUMMYUNIONNAMEN.dwBumpDuBitMask

Маска для битов U-delta карты.

DUMMYUNIONNAMEN.dwOperations

Флаги, указывающие операции, которые могут выполняться на поверхностях с DDPF_D3DFORMAT форматом пикселей. Флаги определены в файле Ddrawi.h.

DUMMYUNIONNAMEN.dwGBitMask

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

DUMMYUNIONNAMEN.dwUBitMask

Маска для битов U.

DUMMYUNIONNAMEN.dwZBitMask

Маска для Z-битов.

DUMMYUNIONNAMEN.dwBumpDvBitMask

Маска для битов V-delta карты от бамп-карты.

DUMMYUNIONNAMEN.MultiSampleCaps

Структура , содержащая следующие два элемента. Эта структура используется для указания поверхностей, которые можно использовать при выполнении многопримерной отрисовки. Каждый бит в 16-разрядных масках указывает на поддержку множественной дискретизации с определенным количеством выборок. Например, бит 0 указывает на поддержку множественной выборки только с одной выборкой, бит 1 указывает на поддержку множественной выборки с двумя выборками и т. д. Драйвер может указать несколько поддерживаемых уровней, объединяя биты с помощью побитового ИЛИ.

DUMMYUNIONNAMEN.MultiSampleCaps.wFlipMSTypes

16-разрядная маска для многоэкранного режима (перелистывания).

DUMMYUNIONNAMEN.MultiSampleCaps.wBltMSTypes

16-разрядная маска для многофакторной дискретизации в оконном режиме (передача битовых блоков).

DUMMYUNIONNAMEN.dwBBitMask

Маска для синих битов.

DUMMYUNIONNAMEN.dwVBitMask

Маска для V-битов.

DUMMYUNIONNAMEN.dwStencilBitMask

Маска для битов трафарета в каждом пикселе z-буфера.

DUMMYUNIONNAMEN.dwBumpLuminanceBitMask

Маскировка для яркости в пикселе карты бампера.

DUMMYUNIONNAMEN.dwRGBAlphaBitMask

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

DUMMYUNIONNAMEN.dwYUVAlphaBitMask

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

DUMMYUNIONNAMEN.dwLuminanceAlphaBitMask

Маска яркости для альфа-канала.

DUMMYUNIONNAMEN.dwRGBZBitMask

Маска RGB для канала z.

DUMMYUNIONNAMEN.dwYUVZBitMask

Маска YUV для канала z.

Комментарии

Элемент dwAlphaBitDepth отражает битовую глубину только альфа-формата пикселей (DDPF_ALPHA). Для форматов пикселей, включающих альфа-компонент с компонентами цвета (DDPF_ALPHAPIXELS), глубина альфа-бита получается путем подсчета битов в различных элементах маски. В следующем примере кода возвращается количество битов, заданное в заданной битовой маске.

WORD GetNumberOfBits( DWORD dwMask )
{
    WORD wBits = 0;
    while( dwMask )
    {
        dwMask = dwMask & ( dwMask - 1 );  
        wBits++;
    }
    return wBits;
}

Объединения в DDPIXELFORMAT были обновлены для работы с компиляторами, которые не поддерживают безымяные объединения. Если компилятор не поддерживает безымяние объединения, определите токен NONAMELESSUNION перед включением файла заголовка Ddraw.h.

Требования

   
Верхняя часть ddraw.h