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
像素格式的凸凸對應資料有效。 Bump-map 資訊位於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 色板位深度 (1、2、4 或 8) ,適用于僅限 Alpha 的介面 (DDPF_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 差異位的遮罩。
DUMMYUNIONNAMEN.dwOperations
旗標,指定可在具有DDPF_D3DFORMAT像素格式的介面上執行的作業。 旗標定義于 Ddrawi.h 中。
DUMMYUNIONNAMEN.dwGBitMask
綠色位的遮罩。
DUMMYUNIONNAMEN.dwUBitMask
U 位的遮罩。
DUMMYUNIONNAMEN.dwZBitMask
z 位的遮罩。
DUMMYUNIONNAMEN.dwBumpDvBitMask
適用于碰撞對應 V 差異位的遮罩。
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) 。 對於包含色彩元件的 Alpha 元件 (DDPF_ALPHAPIXELS) 的像素格式,會藉由計算各種遮罩成員中的位來取得 Alpha 位深度。 下列程式碼範例會傳回指定位元遮罩中設定的位數。
WORD GetNumberOfBits( DWORD dwMask )
{
WORD wBits = 0;
while( dwMask )
{
dwMask = dwMask & ( dwMask - 1 );
wBits++;
}
return wBits;
}
DDPIXELFORMAT中的等位已更新為使用不支援無名稱等位的編譯器。 如果您的編譯器不支援無名稱等位,請先定義 NONAMELESSUNION 權杖,再包含 Ddraw.h 標頭檔。
需求
標頭 | ddraw.h |