共用方式為


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 引數。

這個引數的方程式 (s (rgba) = arg1)

D3DTOP_SELECTARG2

使用此紋理階段的第二個色彩或 Alpha 引數,未修改為輸出。 此作業會影響搭配D3DTSS_COLOROP紋理階段狀態使用時的色彩引數,以及搭配 D3DTSS_ALPHAOP 使用的 Alpha 引數。

這個引數的方程式 (s (rgba) = arg2)

D3DTOP_MODULATE

將引數的元件相乘。

調色運算的方程式 (s (rgba) = arg1 x arg 2)

D3DTOP_MODULATE2X

將引數的元件乘以,並將產品移轉至左邊 1 位, (有效地將它們乘以 2 個) ,以用於亮化。

調色器 2x 運算的方程式 (s (rgba) = (arg1 x arg 2) 然後向左移 1)

D3DTOP_MODULATE4X

將引數的元件乘以,並將產品移轉至左側 2 位, (有效地將它們乘以 4 個) ,以利亮化。

調色器 4x 運算的方程式 (s (rgba) = (arg1 x arg 2) 然後向左移 2)

D3DTOP_ADD

新增引數的元件。

新增作業的方程式 (s (rgba) = arg1 + arg 2)

D3DTOP_ADDSIGNED

使用 - 0.5 偏差新增引數的元件,使值的有效範圍從 - 0.5 到 0.5。

新增帶正負號作業的方程式 (s (rgba) = arg1 + arg 2 – 0.5)

D3DTOP_ADDSIGNED2X

使用 - 0.5 偏差新增引數的元件,並將產品移轉至左側 1 位。

add signed 2x operation ( (s (rgba) = arg1 + arg 2 - 0.5) 然後向左移 1)

D3DTOP_SUBTRACT

從第一個引數的元件減去第二個引數的元件。

減法運算的方程式 (s (rgba) = arg1 - arg 2)

D3DTOP_ADDSMOOTH

新增第一個和第二個引數;然後從總和減去其乘積。

加入平滑運算的方程式 (s (rgba) = arg1 + arg 2 x (1 - arg1) )

D3DTOP_BLENDDIFFUSEALPHA

使用每個頂點的插補 Alpha,以線性方式混合這個紋理階段。

混合擴散 Alpha 運算的方程式 (s (rgba) = arg1 x Alpha + arg 2 x (1 - Alpha) )

D3DTOP_BLENDTEXTUREALPHA

使用這個階段紋理中的 Alpha,以線性方式混合這個紋理階段。

混合紋理 Alpha 運算的方程式 (s (rgba) = arg1 x Alpha + arg 2 x (1 - Alpha) )

D3DTOP_BLENDFACTORALPHA

使用純量 Alpha 集搭配D3DRS_TEXTUREFACTOR轉譯狀態,以線性方式混合此紋理階段。

混合因數 Alpha 運算的方程式 (s (rgba) = arg1 x Alpha + arg 2 x (1 - Alpha) )

D3DTOP_BLENDTEXTUREALPHAPM

以線性方式混合使用預乘 Alpha 的紋理階段。

混合紋理 Alpha pm 運算的方程式 (s (rgba) = arg1 + arg 2 x (1 - Alpha) )

D3DTOP_BLENDCURRENTALPHA

使用取自先前紋理階段的 Alpha,以線性方式混合這個紋理階段。

混合目前 Alpha 運算的方程式 (s (rgba) = arg1 x Alpha + arg2 x (1 - Alpha) )

D3DTOP_PREMODULATE

D3DTOP_PREMODULATE是在階段 n 中設定。 階段 n 的輸出為 arg1。 此外,如果階段 n + 1 中有紋理,則階段 n + 1 中的任何D3DTA_CURRENT都由階段 n + 1 中的紋理預先乘以。

D3DTOP_MODULATEALPHA_ADDCOLOR

使用第一個引數的 Alpha 來調調第二個引數的色彩;然後將結果新增至引數一。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。

加色調色 Alpha 運算的方程式 (s (rgba) = arg1 (rgb) + arg1 () x arg2 (rgb) )

D3DTOP_MODULATECOLOR_ADDALPHA

調調引數;然後新增第一個引數的 Alpha。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。

新增 Alpha 調色色運算的方程式 (s (rgba) = arg1 (rgb) x arg2 (rgb) + arg1 (a) )

D3DTOP_MODULATEINVALPHA_ADDCOLOR

類似于D3DTOP_MODULATEALPHA_ADDCOLOR,但使用第一個引數的 Alpha 反轉。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。

 (s (rgba) = (1 - arg1 (a) ) x arg2 (rgb) + arg1 (rgb) )

D3DTOP_MODULATEINVCOLOR_ADDALPHA

類似于D3DTOP_MODULATECOLOR_ADDALPHA,但使用第一個引數色彩的反轉。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。

新增 Alpha 調色反調色運算的方程式 (s (rgba) = (1 - arg1 (rgb) ) x arg2 (rgb) + arg1 (a) )

D3DTOP_BUMPENVMAP

使用下一個紋理階段中的環境地圖,執行個別圖元的凸凸對應,而不需亮度。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。

D3DTOP_BUMPENVMAPLUMINANCE

使用下一個紋理階段中的環境地圖,搭配亮度執行每個圖元的凸凸對應。 此作業僅支援色彩作業 (D3DTSS_COLOROP) 。

D3DTOP_DOTPRODUCT3

將每個引數的元件調整為已簽署的元件,新增其產品;然後將總和複寫到所有色彩色板,包括 Alpha。 此作業支援色彩和 Alpha 作業。

點產品 3 運算的方程式 (s (rgba) = arg1 (r) x arg2 (r) + arg1 (g) x arg2 (g) + arg1 (b) x arg2 (b) )

在 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

規格需求

需求
標頭
D3D9Types.h

另請參閱

Direct3D 列舉

D3DTEXTURESTAGESTATETYPE