D3DTEXTUREOP 枚举

定义每阶段纹理混合操作。

语法

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纹理阶段状态一起使用时,此操作会影响 color 参数,与 D3DTSS_ALPHAOP 一起使用时影响 alpha 参数。

此参数的公式 (s (rgba) = arg1)

D3DTOP_SELECTARG2

使用此纹理阶段的第二个颜色或 alpha 参数(未修改)作为输出。 与D3DTSS_COLOROP纹理阶段状态一起使用时,此操作会影响 color 参数,与 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 位。

加符号 2x 运算 ( (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 调节第二个参数的颜色;然后将结果添加到参数 1。 只有颜色操作 (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) 才支持此操作。

添加颜色调节反 alpha 运算的公式 (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 位以外的大小。 不使用此值。

备注

使用 D3DTSS_COLOROP 或使用 IDirect3DDevice9::SetTextureStageState 方法D3DTSS_ALPHAOP值来设置颜色或 alpha 操作时,使用此类型的成员。

在上述公式中,SRGBA 是纹理操作生成的 RGBA 颜色,Arg1、Arg2 和 Arg3 表示纹理参数的完整 RGBA 颜色。 参数的各个组件以下标显示。 例如,参数 1 的 alpha 分量将显示为 Arg1A

要求

要求
标头
D3D9Types.h

请参阅

Direct3D 枚举

D3DTEXTURESTAGESTATETYPE