D3DFORMAT
定義各種介面格式類型。
typedef enum _D3DFORMAT {
D3DFMT_UNKNOWN = 0,
D3DFMT_R8G8B8 = 20,
D3DFMT_A8R8G8B8 = 21,
D3DFMT_X8R8G8B8 = 22,
D3DFMT_R5G6B5 = 23,
D3DFMT_X1R5G5B5 = 24,
D3DFMT_A1R5G5B5 = 25,
D3DFMT_A4R4G4B4 = 26,
D3DFMT_R3G3B2 = 27,
D3DFMT_A8 = 28,
D3DFMT_A8R3G3B2 = 29,
D3DFMT_X4R4G4B4 = 30,
D3DFMT_A2B10G10R10 = 31,
D3DFMT_A8B8G8R8 = 32,
D3DFMT_X8B8G8R8 = 33,
D3DFMT_G16R16 = 34,
D3DFMT_A2R10G10B10 = 35,
D3DFMT_A16B16G16R16 = 36,
D3DFMT_A8P8 = 40,
D3DFMT_P8 = 41,
D3DFMT_L8 = 50,
D3DFMT_A8L8 = 51,
D3DFMT_A4L4 = 52,
D3DFMT_V8U8 = 60,
D3DFMT_L6V5U5 = 61,
D3DFMT_X8L8V8U8 = 62,
D3DFMT_Q8W8V8U8 = 63,
D3DFMT_V16U16 = 64,
D3DFMT_A2W10V10U10 = 67,
D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'),
D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'),
D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'),
D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'),
D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
D3DFMT_D16_LOCKABLE = 70,
D3DFMT_D32 = 71,
D3DFMT_D15S1 = 73,
D3DFMT_D24S8 = 75,
D3DFMT_D24X8 = 77,
D3DFMT_D24X4S4 = 79,
D3DFMT_D16 = 80,
D3DFMT_D32F_LOCKABLE = 82,
D3DFMT_D24FS8 = 83,
#if !defined(D3D_DISABLE_9EX)
D3DFMT_D32_LOCKABLE = 84,
D3DFMT_S8_LOCKABLE = 85,
#endif // !D3D_DISABLE_9EX
D3DFMT_L16 = 81,
D3DFMT_VERTEXDATA =100,
D3DFMT_INDEX16 =101,
D3DFMT_INDEX32 =102,
D3DFMT_Q16W16V16U16 =110,
D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T','1'),
D3DFMT_R16F = 111,
D3DFMT_G16R16F = 112,
D3DFMT_A16B16G16R16F = 113,
D3DFMT_R32F = 114,
D3DFMT_G32R32F = 115,
D3DFMT_A32B32G32R32F = 116,
D3DFMT_CxV8U8 = 117,
#if !defined(D3D_DISABLE_9EX)
D3DFMT_A1 = 118,
D3DFMT_A2B10G10R10_XR_BIAS = 119,
D3DFMT_BINARYBUFFER = 199,
#endif // !D3D_DISABLE_9EX
D3DFMT_FORCE_DWORD =0x7fffffff
} D3DFORMAT;
備註
有數種類型的格式:
所有格式都會從左至右列出,最顯著位到最小有效位。 例如, D3DFORMAT_ARGB 會從最重要的位通道 A (Alpha) 排序到最小有效位通道 B (藍色) 。 周遊表面資料時,資料會儲存在記憶體中,從最小有效位到最顯著位,這表示記憶體中的通道順序是從最小有效位 (藍色) 到最顯著位 (Alpha) 。
包含未定義通道的格式預設值, (G16R16、A8 等等) 為 1。 唯一的例外是 A8 格式,此格式會針對三個色彩色板初始化為 000。
位的順序會先來自最重要的位元組,因此D3DFMT_A8L8表示這個 2 位元組格式的高位元組是 Alpha。 D3DFMT_D16 表示 16 位整數值和可鎖定的應用程式介面。
已選擇像素格式來啟用硬體廠商定義延伸模組格式的運算式,以及包含妥善建立的 FOURCC 方法。 Direct3D 執行時間所瞭解的格式集是由 D3DFORMAT 所定義。
請注意,獨立硬體廠商提供的格式 (IHV) ,而且未列出許多 FOURCC 程式碼。 此列舉中的格式是執行時間所批准的唯一格式,這表示參考點陣化程式會在所有這些類型上運作。 個別 IHV 會根據卡片來支援 IHV 提供的格式。
BackBuffer 或顯示格式
這些格式是背景緩衝區或顯示器的唯一有效格式。
格式 | 上一頁緩衝區 | 顯示 |
---|---|---|
A2R10G10B10 | x | 僅) x (全螢幕模式 |
A8R8G8B8 | x | |
X8R8G8B8 | x | x |
A1R5G5B5 | x | |
X1R5G5B5 | x | x |
R5G6B5 | x | x |
緩衝區格式
深度、樣板、頂點和索引緩衝區各有唯一的格式。
緩衝區旗標 | 值 | 格式 |
---|---|---|
D3DFMT_D16_LOCKABLE | 70 | 16 位 z 緩衝區位深度。 |
D3DFMT_D32 | 71 | 32 位 z 緩衝區位深度。 |
D3DFMT_D15S1 | 73 | 16 位 z 緩衝區位深度,其中 15 位會保留給深度通道,而 1 位則保留給樣板通道。 |
D3DFMT_D24S8 | 75 | 深度通道使用 24 位的 32 位 z 緩衝區位深度,樣板通道則使用 8 位。 |
D3DFMT_D24X8 | 77 | 針對深度通道使用 24 位的 32 位 z 緩衝區位深度。 |
D3DFMT_D24X4S4 | 79 | 深度通道使用 24 位的 32 位 z 緩衝區位深度,樣板通道則使用 4 位。 |
D3DFMT_D32F_LOCKABLE | 82 | 可鎖定的格式,其中深度值會以標準 IEEE 浮點數表示。 |
D3DFMT_D24FS8 | 83 | 不可鎖定的格式,包含 24 位浮點格式的 24 位深度 (- 20e4) 和 8 位樣板。 |
D3DFMT_D32_LOCKABLE | 84 | 可鎖定的 32 位深度緩衝區。
Direct3D 9 與 Direct3D 9Ex 之間的差異: 此旗標僅適用于 Direct3D 9Ex。 |
D3DFMT_S8_LOCKABLE | 85 | 可鎖定的 8 位樣板緩衝區。
Direct3D 9 與 Direct3D 9Ex 之間的差異: 此旗標僅適用于 Direct3D 9Ex。 |
D3DFMT_D16 | 80 | 16 位 z 緩衝區位深度。 |
D3DFMT_VERTEXDATA | 100 | 描述頂點緩衝區介面。 |
D3DFMT_INDEX16 | 101 | 16 位索引緩衝區位深度。 |
D3DFMT_INDEX32 | 102 | 32 位索引緩衝區位深度。 |
除了D3DFMT_D16_LOCKABLE以外的所有深度樣板格式都表示每個圖元沒有特定的位順序,而且驅動程式可以取用超過每個深度通道 (指定的位數,但不允許樣板通道) 。
DXTn 壓縮紋理格式
這些旗標用於壓縮紋理:
DXTn 壓縮紋理旗標 | 值 | 格式 |
---|---|---|
D3DFMT_DXT1 | MAKEFOURCC ('D'、'X'、'T'、'1') | DXT1 壓縮紋理格式 |
D3DFMT_DXT2 | MAKEFOURCC ('D'、'X'、'T'、'2') | DXT2 壓縮紋理格式 |
D3DFMT_DXT3 | MAKEFOURCC ('D'、'X'、'T'、'3') | DXT3 壓縮紋理格式 |
D3DFMT_DXT4 | MAKEFOURCC ('D', 'X', 'T', '4') | DXT4 壓縮紋理格式 |
D3DFMT_DXT5 | MAKEFOURCC ('D', 'X', 'T', '5') | DXT5 壓縮紋理格式 |
除非表面尺寸是 4 的倍數,否則執行時間不允許應用程式使用 DXTn 格式建立表面。 這適用于螢幕外純螢幕、轉譯目標、2D 紋理、立方體紋理和磁片區紋理。
Floating-Point格式
這些旗標用於浮點表面格式。 每個通道的 16 位格式也稱為 s10e5 格式。
浮點旗標 | 值 | 格式 |
---|---|---|
D3DFMT_R16F | 111 | 針對紅色通道使用 16 位的 16 位浮點數格式。 |
D3DFMT_G16R16F | 112 | 紅色通道使用 16 位的 32 位 float 格式,而綠色通道則使用 16 位。 |
D3DFMT_A16B16G16R16F | 113 | 每個通道使用 16 位的 64 位 float 格式, (Alpha、藍色、綠色、紅色) 。 |
FOURCC 格式
FOURCC 格式的資料是壓縮的資料。
MAKEFOURCC
產生四個字元代碼的宏如下:
#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
以下是定義的 FOURCC 格式:
FOURCC 旗標 | 值 | 格式 |
---|---|---|
D3DFMT_MULTI2_ARGB8 | MAKEFOURCC ('M','E','T','1') | MultiElement 紋理 (未壓縮) |
D3DFMT_G8R8_G8B8 | MAKEFOURCC ('G'、'R'、'G'、'B') | 16 位封裝的 RGB 格式類似于 YUY2 (Y0U0、Y1V0、Y2U2 等等) 。 它需要圖元組才能正確表示色彩值。 配對中的第一個圖元在高 8 位) 中包含 8 位綠色 (,而低 8 位) 則包含 8 位紅色 (。 第二個圖元在高 8 位) 中包含 8 位綠色 (,而低 8 位) 則包含 8 位藍色 (。 兩個圖元會共用紅色和藍色元件,而每個元件都有唯一的綠色元件 (G0R0、G1B0、G2R2 等等) 。 在查閱圖元著色器時,紋理取樣器不會將色彩正規化;它們會保留在 0.0f 到 255.0f 的範圍內。 這適用于所有可程式化圖元著色器模型。 針對固定函式圖元著色器,硬體應該標準化為 0.f 到 1.f 範圍,基本上會將它視為 YUY2 紋理。 公開此格式的硬體必須將 D3DCAPS9 的 PixelShader1xMaxValue 成員設定為能夠處理該範圍的值。 |
D3DFMT_R8G8_B8G8 | MAKEFOURCC ('R'、'G'、'B'、'G') | 16 位封裝的 RGB 格式類似于 UYVY (U0Y0、V0Y1、U2Y2 等) 。 它需要圖元組才能正確表示色彩值。 配對中的第一個圖元在低 8 位) 中包含 8 位綠色 (,而高 8 位) 則包含 8 位紅色 (。 第二個圖元在低 8 位) 中包含 8 位綠色 (,而高 8 位) 則包含 8 位藍色 (。 兩個圖元會共用紅色和藍色元件,而每個元件都有唯一的綠色元件 (R0G0、B0G1、R2G2 等等) 。 在查閱圖元著色器時,紋理取樣器不會將色彩正規化;它們會保留在 0.0f 到 255.0f 的範圍內。 這適用于所有可程式化圖元著色器模型。 針對固定函式圖元著色器,硬體應該標準化為 0.f 到 1.f 範圍,基本上會將它視為 YUY2 紋理。 公開此格式的硬體必須將 D3DCAPS9 的 PixelShader1xMaxValue 成員設定為能夠處理該範圍的值。 |
D3DFMT_UYVY | MAKEFOURCC ('U'、'Y'、'V'、'Y') | UYVY 格式 (PC98 合規性) |
D3DFMT_YUY2 | MAKEFOURCC ('Y'、'U'、'Y'、'2') | YUY2 格式 (PC98 合規性) |
IEEE 格式
這些旗標用於浮點表面格式。 這些每個通道的 32 位格式也稱為 s23e8 格式。
浮點旗標 | 值 | 格式 |
---|---|---|
D3DFMT_R32F | 114 | 針對紅色通道使用 32 位的 32 位浮點數格式。 |
D3DFMT_G32R32F | 115 | 紅色通道使用 32 位的 64 位浮點數格式,而綠色通道則使用 32 位。 |
D3DFMT_A32B32G32R32F | 116 | 每個通道使用 32 位的 128 位 float 格式, (Alpha、藍色、綠色、紅色) 。 |
混合格式
混合格式的資料可以包含未簽署資料和已簽署資料的組合。
混合格式旗標 | 值 | 格式 |
---|---|---|
D3DFMT_L6V5U5 | 61 | 16 位的凸起對應格式,使用 6 位的亮度來表示亮度,而 v 和您各有 5 個位。 |
D3DFMT_X8L8V8U8 | 62 | 每個通道使用 8 位的 32 位凸起對應格式與亮度。 |
D3DFMT_A2W10V10U10 | 67 | 針對 Alpha 使用 2 個位的 32 位和 10 位,分別用於 w、v 和 you。 |
帶正負號的格式
帶正負號格式的資料可以是正數和負數。 帶正負號的格式會使用 (U) 、 (V) 、 (W) 和 (Q) 資料的組合。
帶正負號的格式旗標 | 值 | 格式 |
---|---|---|
D3DFMT_V8U8 | 60 | 針對您和 v 資料使用 8 位的 16 位翻轉對應格式。 |
D3DFMT_Q8W8V8U8 | 63 | 每個通道使用 8 位的 32 位凸起對應格式。 |
D3DFMT_V16U16 | 64 | 每個通道使用 16 位的 32 位凸起對應格式。 |
D3DFMT_Q16W16V16U16 | 110 | 每個元件使用 16 位的 64 位凸起對應格式。 |
D3DFMT_CxV8U8 | 117 | 16 位的一般壓縮格式。 紋理取樣器會從下列來源計算 C 通道:C = sqrt (1 - Uー - Vー) 。 |
不帶正負號的格式
不帶正負號格式的資料必須是正數。 不帶正負號的格式會使用 (R) ed、 (G) 重新啟用、 (B) lue、 (A) lpha、 (L) 支配和 (P) alette 資料的組合。 調色盤資料也稱為色彩索引資料,因為資料是用來為調色盤編制索引。
不帶正負號的格式旗標 | 值 | 格式 |
---|---|---|
D3DFMT_R8G8B8 | 20 | 每個通道 8 位的 24 位 RGB 像素格式。 |
D3DFMT_A8R8G8B8 | 21 | 具有 Alpha 的 32 位 ARGB 像素格式,每個通道使用 8 位。 |
D3DFMT_X8R8G8B8 | 22 | 32 位 RGB 像素格式,其中 8 位會保留給每個色彩。 |
D3DFMT_R5G6B5 | 23 | 16 位 RGB 像素格式,5 位表示紅色,6 位代表綠色,5 位代表藍色。 |
D3DFMT_X1R5G5B5 | 24 | 16 位像素格式,其中 5 位會保留給每個色彩。 |
D3DFMT_A1R5G5B5 | 25 | 16 位像素格式,其中 5 位會保留給每個色彩,而 1 位則保留給 Alpha。 |
D3DFMT_A4R4G4B4 | 26 | 每個通道有 4 位的 16 位 ARGB 像素格式。 |
D3DFMT_R3G3B2 | 27 | 8 位 RGB 紋理格式使用 3 位表示紅色、3 位表示綠色,2 位表示藍色。 |
D3DFMT_A8 | 28 | 僅限 8 位 Alpha。 |
D3DFMT_A8R3G3B2 | 29 | 16 位 ARGB 紋理格式使用 8 位用於 Alpha,3 位分別用於紅色和綠色,2 位表示藍色。 |
D3DFMT_X4R4G4B4 | 30 | 每個色彩使用 4 位的 16 位 RGB 像素格式。 |
D3DFMT_A2B10G10R10 | 31 | 每個色彩使用 10 位的 32 位像素格式,Alpha 則使用 2 位。 |
D3DFMT_A8B8G8R8 | 32 | 具有 Alpha 的 32 位 ARGB 像素格式,每個通道使用 8 位。 |
D3DFMT_X8B8G8R8 | 33 | 32 位 RGB 像素格式,其中 8 位會保留給每個色彩。 |
D3DFMT_G16R16 | 34 | 使用 16 位的 32 位像素格式,分別用於綠色和紅色。 |
D3DFMT_A2R10G10B10 | 35 | 32 位像素格式,使用 10 位表示紅色、綠色和藍色,2 位表示 Alpha。 |
D3DFMT_A16B16G16R16 | 36 | 每個元件使用 16 位的 64 位像素格式。 |
D3DFMT_A8P8 | 40 | 以 8 位 Alpha 為索引的 8 位色彩。 |
D3DFMT_P8 | 41 | 已編制索引的 8 位色彩。 |
D3DFMT_L8 | 50 | 僅限 8 位亮度。 |
D3DFMT_L16 | 81 | 僅限 16 位亮度。 |
D3DFMT_A8L8 | 51 | 16 位使用 8 位,分別用於 Alpha 和亮度。 |
D3DFMT_A4L4 | 52 | 使用 4 位的 8 位分別用於 Alpha 和亮度。 |
D3DFMT_A1 | 118 | 1 位單色。
Direct3D 9 與 Direct3D 9Ex 之間的差異: 此旗標僅適用于 Direct3D 9Ex。 |
D3DFMT_A2B10G10R10_XR_BIAS | 119 | 2.8 偏差的固定點。
Direct3D 9 與 Direct3D 9Ex 之間的差異: 此旗標僅適用于 Direct3D 9Ex。 |
D3DFMT_BINARYBUFFER | 199 | 二進位格式,表示資料沒有固有類型。
Direct3D 9 與 Direct3D 9Ex 之間的差異: 此旗標僅適用于 Direct3D 9Ex。 |
其他
這個旗標用於未定義的格式。
其他旗標 | 值 | 格式 |
---|---|---|
D3DFMT_UNKNOWN | 0 | Surface 格式不明 |
規格需求
需求 | 值 |
---|---|
標頭 |
|
另請參閱