D3DTEXTUREOP 列舉
定義每個階段紋理混合作業。
Syntax
typedef enum D3DTEXTUREOP {
D3DTOP_DISABLE = 1,
D3DTOP_SELECTARG1 = 2,
D3DTOP_SELECTARG2 = 3,
D3DTOP_MODULATE = 4,
D3DTOP_MODULATE2X = 5,
D3DTOP_MODULATE4X = 6,
D3DTOP_ADD = 7,
D3DTOP_ADDSIGNED = 8,
D3DTOP_ADDSIGNED2X = 9,
D3DTOP_SUBTRACT = 10,
D3DTOP_ADDSMOOTH = 11,
D3DTOP_BLENDDIFFUSEALPHA = 12,
D3DTOP_BLENDTEXTUREALPHA = 13,
D3DTOP_BLENDFACTORALPHA = 14,
D3DTOP_BLENDTEXTUREALPHAPM = 15,
D3DTOP_BLENDCURRENTALPHA = 16,
D3DTOP_PREMODULATE = 17,
D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
D3DTOP_MODULATECOLOR_ADDALPHA = 19,
D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
D3DTOP_BUMPENVMAP = 22,
D3DTOP_BUMPENVMAPLUMINANCE = 23,
D3DTOP_DOTPRODUCT3 = 24,
D3DTOP_MULTIPLYADD = 25,
D3DTOP_LERP = 26,
D3DTOP_FORCE_DWORD = 0x7fffffff
} D3DTEXTUREOP, *LPD3DTEXTUREOP;
常數
-
D3DTOP_DISABLE
-
停用此紋理階段的輸出,以及具有較高索引的所有階段。 若要停用紋理對應,請將此設定為第一個紋理階段 (階段 0) 的色彩作業。 啟用色彩作業時,無法停用 Alpha 作業。 啟用色彩混合時,將 Alpha 運算設定為D3DTOP_DISABLE會導致未定義的行為。
-
D3DTOP_SELECTARG1
-
使用此紋理階段的第一個色彩或 Alpha 引數,未修改為輸出。 此作業會影響搭配D3DTSS_COLOROP紋理階段狀態使用時的色彩引數,以及搭配使用 D3DTSS_ALPHAOP 時的 Alpha 引數。
-
D3DTOP_SELECTARG2
-
使用此紋理階段的第二個色彩或 Alpha 引數,未修改為輸出。 此作業會影響搭配D3DTSS_COLOROP紋理階段狀態使用時的色彩引數,以及搭配 D3DTSS_ALPHAOP 使用的 Alpha 引數。
-
D3DTOP_MODULATE
-
將引數的元件相乘。
-
D3DTOP_MODULATE2X
-
將引數的元件乘以,並將產品移轉至左邊 1 位, (有效地將它們乘以 2 個) ,以用於亮化。
-
D3DTOP_MODULATE4X
-
將引數的元件乘以,並將產品移轉至左側 2 位, (有效地將它們乘以 4 個) ,以利亮化。
-
D3DTOP_ADD
-
新增引數的元件。
-
D3DTOP_ADDSIGNED
-
使用 - 0.5 偏差新增引數的元件,使值的有效範圍從 - 0.5 到 0.5。
-
D3DTOP_ADDSIGNED2X
-
使用 - 0.5 偏差新增引數的元件,並將產品移轉至左側 1 位。
-
D3DTOP_SUBTRACT
-
從第一個引數的元件減去第二個引數的元件。
-
D3DTOP_ADDSMOOTH
-
新增第一個和第二個引數;然後從總和減去其乘積。
-
D3DTOP_BLENDDIFFUSEALPHA
-
使用每個頂點的插補 Alpha,以線性方式混合這個紋理階段。
-
D3DTOP_BLENDTEXTUREALPHA
-
使用這個階段紋理中的 Alpha,以線性方式混合這個紋理階段。
-
D3DTOP_BLENDFACTORALPHA
-
使用純量 Alpha 集搭配D3DRS_TEXTUREFACTOR轉譯狀態,以線性方式混合此紋理階段。
-
D3DTOP_BLENDTEXTUREALPHAPM
-
以線性方式混合使用預乘 Alpha 的紋理階段。
-
D3DTOP_BLENDCURRENTALPHA
-
使用取自先前紋理階段的 Alpha,以線性方式混合這個紋理階段。
-
D3DTOP_PREMODULATE
-
D3DTOP_PREMODULATE是在階段 n 中設定。 階段 n 的輸出為 arg1。 此外,如果階段 n + 1 中有紋理,則階段 n + 1 中的任何D3DTA_CURRENT都由階段 n + 1 中的紋理預先乘以。
-
D3DTOP_MODULATEALPHA_ADDCOLOR
-
使用第一個引數的 Alpha 來調調第二個引數的色彩;然後將結果新增至引數一。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。
-
D3DTOP_MODULATECOLOR_ADDALPHA
-
調調引數;然後新增第一個引數的 Alpha。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。
-
D3DTOP_MODULATEINVALPHA_ADDCOLOR
-
類似于D3DTOP_MODULATEALPHA_ADDCOLOR,但使用第一個引數的 Alpha 反轉。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。
-
D3DTOP_MODULATEINVCOLOR_ADDALPHA
-
類似于D3DTOP_MODULATECOLOR_ADDALPHA,但使用第一個引數色彩的反轉。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。
-
D3DTOP_BUMPENVMAP
-
使用下一個紋理階段中的環境地圖,執行個別圖元的凸凸對應,而不需亮度。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。
-
D3DTOP_BUMPENVMAPLUMINANCE
-
使用下一個紋理階段中的環境地圖,搭配亮度執行每個圖元的凸凸對應。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。
-
D3DTOP_DOTPRODUCT3
-
將每個引數的元件調整為已簽署的元件,新增其產品;然後將總和複寫到所有色彩色板,包括 Alpha。 此作業支援色彩和 Alpha 作業。
在 DirectX 6 和 DirectX 7 中,上述輸入的多重文字作業會向下移一半 (y = x - 0.5) ,再用來模擬帶正負號的資料,而且純量結果會自動固定為正值,並複寫到這三個輸出通道。 此外,請注意,當色彩作業時,這不會更新 Alpha,它只會更新 RGB 元件。
不過,在 DirectX 8.1 著色器中,您可以指定輸出路由傳送至 .rgb 或 .a 元件,或兩者 (預設) 。 您也可以在 Alpha 通道上指定個別的純量運算。
-
D3DTOP_MULTIPLYADD
-
執行乘積運算。 它會取用最後兩個引數、將它們相乘,並將其新增至其餘的輸入/來源引數,並將它放入結果中。
SRGBA = Arg1 + Arg2 * Arg3
-
D3DTOP_LERP
-
以第一個來源引數中指定的比例,以線性方式插補第二個和第三個來源引數之間的比例。
SRGBA = (Arg1) * Arg2 + (1- Arg1) * Arg3。
-
D3DTOP_FORCE_DWORD
-
強制此列舉編譯為大小為 32 位。 如果沒有此值,某些編譯器會允許此列舉編譯成 32 位以外的大小。 不使用這個值。
備註
使用 IDirect3DDevice9::SetTextureStageState 方法設定色彩或 Alpha 作業時,會使用此類型的成員D3DTSS_COLOROP或D3DTSS_ALPHAOP值。
在上述公式中,S RGBA 是紋理作業所產生的RGBA 色彩,Arg1、Arg2 和 Arg3 代表紋理引數的完整 RGBA 色彩。 引數的個別元件會顯示下標。 例如,引數 1 的 Alpha 元件會顯示為 Arg1A。
規格需求
需求 | 值 |
---|---|
標頭 |
|
另請參閱