DDPIXELFORMAT 结构 (ddraw.h)
DDPIXELFORMAT 结构描述 IDirectDrawSurface7::GetPixelFormat 方法的 DirectDrawSurface 对象的像素格式。
语法
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
像素格式的凹凸图数据有效。 凹凸映射信息位于 dwBumpBitCount、 dwBumpDuBitMask、 dwBumpDvBitMask 和 dwBumpLuminanceBitMask 成员中。
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 |