DDPIXELFORMAT 结构 (ddraw.h)

DDPIXELFORMAT 结构描述 IDirectDrawSurface7::GetPixelFormat 方法的 DirectDrawSurface 对象的像素格式。

注意 不应使用此结构来解码具有 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

像素格式描述仅限 alpha 的图面。

DDPF_ALPHAPIXELS

图面具有像素格式的 alpha 通道信息。

DDPF_ALPHAPREMULT

图面使用预乘 alpha 格式。 也就是说,每个像素中的颜色分量由 alpha 分量预乘。

DDPF_BUMPLUMINANCE

像素格式的亮度数据有效, dwLuminanceBitMask 成员描述仅亮度或亮度 alpha 图面的有效亮度位。

DDPF_BUMPDUDV

像素格式的凹凸图数据有效。 凹凸映射信息位于 dwBumpBitCountdwBumpDuBitMaskdwBumpDvBitMaskdwBumpLuminanceBitMask 成员中。

DDPF_COMPRESSED

图面接受指定格式的像素数据,并在写入操作期间对其进行压缩。

DDPF_D3DFORMAT

指示纹理格式列表中的 DirectX 8.0 及更高版本格式功能条目。 此标志不向应用程序公开,在 Ddrawi.h 中定义。

DDPF_FOURCC

dwFourCC 成员有效,包含描述非 RGB 像素格式的 FOURCC 代码。

DDPF_LUMINANCE

像素格式描述仅亮度或亮度 alpha 图面。

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

仅限 alpha 的图面 (DDPF_ALPHA) 的 Alpha 通道位深度 (1、2、4 或 8) 。 对于包含与颜色数据交错的 alpha 信息的像素格式 (DDPF_ALPHAPIXELS) ,对 dwRGBAlphaBitMask 成员中的位进行计数,以获取 alpha 分值的位深度。 有关如何确定 alpha 位深度的详细信息,请参阅备注。

DUMMYUNIONNAMEN.dwLuminanceBitCount

每个像素的总亮度位数。 此成员仅适用于仅亮度和亮度 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 位表示支持使用两个样本进行多重采样,依此而过。 驱动程序可以通过使用按位 OR 组合位来指示多个受支持的级别。

DUMMYUNIONNAMEN.MultiSampleCaps.wFlipMSTypes

用于全屏 (翻转) 模式多重采样的 16 位掩码。

DUMMYUNIONNAMEN.MultiSampleCaps.wBltMSTypes

用于窗口化 (位块传输) 模式多重采样的 16 位掩码。

DUMMYUNIONNAMEN.dwBBitMask

蓝色位的掩码。

DUMMYUNIONNAMEN.dwVBitMask

V 位掩码。

DUMMYUNIONNAMEN.dwStencilBitMask

每个 z 缓冲区像素内模具位的掩码。

DUMMYUNIONNAMEN.dwBumpLuminanceBitMask

凹凸贴图像素中亮度的掩码。

DUMMYUNIONNAMEN.dwRGBAlphaBitMask

alpha 通道的 RGB 掩码。

DUMMYUNIONNAMEN.dwYUVAlphaBitMask

alpha 通道的 YUV 掩码。

DUMMYUNIONNAMEN.dwLuminanceAlphaBitMask

alpha 通道的亮度掩码。

DUMMYUNIONNAMEN.dwRGBZBitMask

z 通道的 RGB 掩码。

DUMMYUNIONNAMEN.dwYUVZBitMask

Z 通道的 YUV 掩码。

备注

dwAlphaBitDepth 成员反映仅 alpha 像素格式的位深度 (DDPF_ALPHA) 。 对于包含带有颜色分量 (DDPF_ALPHAPIXELS) 的 alpha 分量的像素格式,可通过对各种掩码成员中的位进行计数来获取 alpha 位深度。 下面的代码示例返回在给定位掩码中设置的位数。

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

DDPIXELFORMAT 中的联合已更新为使用不支持无名称联合的编译器。 如果编译器不支持无名称联合,请在包含 Ddraw.h 头文件之前定义 NONAMELESSUNION 令牌。

要求

   
标头 ddraw.h