HRESULT
);
它有三个参数:
参数 | 说明 |
Stage | 设定需要修改的纹理层。由于Direct3D支持8个纹理层而且是从0开始的,因此合理值为0~7 |
Type | 设定需要修改的纹理层属性(状态)。每个层都有一些状态,但是只关心其中少数几个 |
Value | 设定需要把纹理层的状态设置成什么内容。此处的设置值取决于Type参数的设置值 |
下面是Type可以设置的状态.
D3DTSS_COLOROP:设置纹理状态的颜色运算符
D3DTSS_ALPHAOP:设置纹理状态的alpha运算符
D3DTSS_COLORARG:设置纹理状态的第一个颜色输入。
D3DTSS_COLORARG2:设置纹理状态的第二个颜色输入。
D3DTSS_ALPHAARG1:设置纹理状态的第一个alpha输入。
D3DTSS_ALPHAARG2
Type参数列表:
typedef enum _D3DTEXTURESTAGESTATETYPE
} D3DTEXTURESTAGESTATETYPE
D3DTOP_DISABLE:
禁用运算。通知Direct3D使用最后一个层的输出作为最终的颜色。
D3DTOP_SELECTARG1:
通知Direct3D使用这个纹理层的第一个输入作为输出,不做任何改变。
D3DTOP_SELECTARG2:
通知Direct3D使用这个纹理层的第二个输入作为输出,不做任何改变。
D3DTOP_MODULATE:
把两个输入颜色调制(相乘)在一起。
D3DTOP_ADD:
把两个输入颜色加到一起。
D3DTOP_SUBTRACT:
从第一个输入中减去第二个输入。
D3DTOP_BLENDDIFFUSEALPHA:
使用对定点的漫射颜色进行内插替换得到的alpha值混合两个输入。例如,如果制作了一个四边形,其左边顶点的alpha值为0.0,右边顶点的alpha值为1.0,这样对两个输入的混合的结果是在四边形的左边,第二个输入是完全则是透明的。
D3DTOP_BLENDTEXTUREALPHA:
使用这个层纹理的适当纹理元素的alpha值来混合两个输入。
D3DTOP_BLENDFACTORALPHA:
使用常量alpha值混合两个输入。在调用SetRenderState时设置D3DRS_TEXTUREFACTOR渲染状态来设定这个alpha值:
D3DTOP_BLENDCURRENTALPHA:
使用前一个层输出的alpha值来混合两个输入。
如果给Type参数设置了任何颜色或者alpha变量,可以使用Input参数来通知Direct3D从何处获取该输入的颜色信息。选择内容如下:
D3DTA_DIFFESE:
Direct3D使用漫反射颜色(如果使用的是gourand明暗模式,就对顶点间进行插值)作为输入。如果可变定点格式中没有包括定点颜色,Direct3D就使用RGB(255, 255, 255)作为漫反射颜色。
D3DTA_SPECULAR:
Direct3D使用镜面反射颜色作为输入,如果顶点不包含镜面反射颜色,Direct3D就使用RGB(255, 255, 255)作为镜面颜色。
D3DTA_TEXTURE:
Direct3D使用纹理作为输入,也就是Direct3D使用设定的纹理的适当的纹理元素的颜色(调用SetTexture函数)作为输入。
D3DTA_CURRENT:
通知Direct3D使用前一个纹理层的输出作为这个纹理层的输入。如果对0层使用这个设置,Direct3D将使用漫反射颜色,就想设置D3DTA_DIFFUSE一样。请注意,如果正在使用凹凸映射,则跳过用于凹凸映射的纹理层。如果设置层3的输入为D3DTA_CURRENT,层2是凹凸映射,则Direct3D使用层1的输出作为层3的一个输入。
D3DTA_TEMP:
某些图形卡有一个用于临时存放颜色数据的空间,程序可以随意对其读取或写入。本标记表示通知Direct3D使用这个临时空间作为输入颜色。请注意,在使用之前要检查设备的D3DPMISCCAPS_TSSARGTEMP功能,以确保设备有一个临时纹理槽。
还可以对这些D3DTA_标记联合适应下面两个修饰符之一:
D3DTA_COMPLEMENT:通知Direct3D对变量进行非运算(也就是说,如果变量的初始值为x,翻转后就变成了1.0-x