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 参数。
-
D3DTOP_SELECTARG2
-
使用此纹理阶段的第二个颜色或 alpha 参数(未修改)作为输出。 与D3DTSS_COLOROP纹理阶段状态一起使用时,此操作会影响 color 参数,与 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 调节第二个参数的颜色;然后将结果添加到参数 1。 只有颜色操作 (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 位以外的大小。 不使用此值。
备注
使用 D3DTSS_COLOROP 或使用 IDirect3DDevice9::SetTextureStageState 方法D3DTSS_ALPHAOP值来设置颜色或 alpha 操作时,使用此类型的成员。
在上述公式中,SRGBA 是纹理操作生成的 RGBA 颜色,Arg1、Arg2 和 Arg3 表示纹理参数的完整 RGBA 颜色。 参数的各个组件以下标显示。 例如,参数 1 的 alpha 分量将显示为 Arg1A。
要求
要求 | 值 |
---|---|
标头 |
|
请参阅