共用方式為


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,這是 DirectX 9.0 的0x00000900,其 格式 為D3DGDI2_TYPE_GETFORMAT查詢之 DD_GETFORMATDATA 結構的成員。

dwFlags

指出指定選擇性控件旗標的一組旗標。 這個成員是下列任何值的位 OR:

旗標 意義
DDPF_ALPHA 圖元格式描述僅限 Alpha 表面。
DDPF_ALPHAPIXELS 表面具有圖元格式的 Alpha 色板資訊。
DDPF_ALPHAPREMULT 圖元中的色彩元件會由圖元中的 Alpha 值預先乘以。 如果設定此旗標,也必須設定DDPF_ALPHAPIXELS旗標。 如果未設定此旗標,但已設定DDPF_ALPHAPIXELS旗標,則像素格式的色彩元件不會由alpha預先乘以。 在此情況下,色彩元件必須在執行 Alpha 混合作業時乘以 Alpha 值。
DDPF_BUMPDUDV 像素格式的凸凸地圖 dUdV 數據有效。
DDPF_BUMPHEIGHT 圖元格式的凸凸地圖高度數據有效。
DDPF_COMPRESSED 介面接受指定格式的像素數據,並在寫入作業期間加以壓縮。
DDPF_D3DFORMAT 指出紋理格式清單中的 DirectX 8.0 和更新版本格式功能專案。 此旗標不會公開給應用程式。
DDPF_FOURCC FOURCC 程式代碼有效。
DDPF_LUMINANCE 像素格式的亮度數據有效。 將此旗標用於僅限亮度或亮度加 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

指定Alpha色板位深度。

dwRBitMask

指定紅色位的遮罩。

dwYBitMask

指定 Y 位的遮罩。

dwGBitMask

指定綠色位的遮罩。

dwUBitMask

指定 U 位的遮罩。

dwBBitMask

指定藍色位的遮罩。

dwVBitMask

指定 V 位的遮罩。

dwRGBAlphaBitMask

Alpha 色板的遮罩。

dwYUVAlphaBitMask

Alpha 色板的遮罩。

dwRGBZBitMask

Z 通道的遮罩。

dwYUVZBitMask

Z 通道的遮罩。

備註

DirectX 8.0 和更新版本的運行時間會對作業 (op) 列表施加下列規則:

  • 允許任何 DS 格式只有一個 Endian-ness (big 或 small) ,例如 D15S1 或 S1D15,而不是與其他位無關。

  • 清單應該只包含一個 16bpp 格式的D3DFORMAT_OP_DISPLAYMODE (,例如,它不應該列舉 5:5:5 和 5:6:5) 。

  • 清單不應包含任何已設定D3DFORMAT_OP_DISPLAYMODE或D3DFORMAT_OP_3DACCELLERATION的Alpha格式。

  • 只有在同時設定D3DFORMAT_OP_DISPLAYMODE旗標時,才能設定D3DFORMAT_OP_3DACCELLERATION旗標。

如果驅動程式支援可鎖定的 D16,它應該會在作業清單中回報D3DFMT_D16_LOCKABLE;否則,它應該會回報D3DFMT_D16。

支援多重取樣的驅動程序必須以可支援多重取樣的深度/樣板格式填入 MultiSampleCaps 。 這可讓運行時間偵測驅動程式是否支援對轉譯目標和 Z 緩衝區格式的組合進行多重取樣。 如需有關延展式blt多重取樣相關限制的詳細資訊,請參閱 SDK 檔中D3DCAPS8結構中包含的點陣caps 中D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE上限的描述。

設定 wFlipMSTypeswBltMSTypes 中的位時,會使用 d3d8types.h 中定義的列舉型別D3DMULTISAMPLE_TYPE。 若要指定每個圖元特定樣本數目的支援,只要以邏輯方式將 1 從D3DMULTISAMPLE_TYPE列舉類型的適當值移位 1,或這會移入適當的欄位 (wFlipMSTypeswBltMSTypes) 。

例如,如果驅動程式在翻轉 (全螢幕模式時支援每個圖元的兩個和四個樣本) ,並在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)