改变D3D中的渲染状态
1). 设置着色模式:
SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式
SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //设置格劳德着色模式
2). 设置多边形填充模式:
SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT) //点填充模式,D3D在多边形的每个顶点绘制一个像素
SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME) //线填充模式,D3D在多边形的每个边绘制一条线
SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID) //面模式,D3D默认模式,对多边形的面进行填充
3). 设置全景图形抗锯齿:
SetRenderState(D3DRS_MUTISAMPLEANTIALIAS, TRUE) //抗锯齿
SetRenderState(D3DRS_MUTISAMPLEANTIALIAS, FALSE) //不抗锯齿
4). 设置剔除模式:
SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE) //不剔除任何面
5). 设置光照模式:
SetRenderState(D3DRS_AMBIENT, D3DCOLOR ambientColor); //为整个场景设置环境光
SetRenderState(D3DRS_SPECULARENABLE, TRUE); //激活镜面反射计算(D3D默认情况下关闭)
6). 启动/关闭深度测试:
SetRenderState( D3DRS_ZENABLE, TRUE ); //启用深度测试
7) 设置纹理过滤器
//线性纹理
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
//最近点采样
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ POINT);
SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
//各向异性纹理过滤
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC)
SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_ ANISOTROPIC);
8)
SetRenderState( D3DRS_POINTSCALEENABLE, TRUE ); //打开缩放功能
9)
SetRenderState( D3DRS_POINTSCALE_A , FtoDW( 1.00f ));//设置因子,下同
SetRenderState( D3DRS_POINTSCALE_B , FtoDW( 1.00F ));
SetRenderState( D3DRS_POINTSCALE_C , FtoDW( 1.00f ));
10)
SetRenderState( D3DRS_POINTSIZE_MAX, FtoDW( 5.00f ));//设置点大小上限,下类似
SetRenderState( D3DRS_POINTSIZE_MAX, FtoDW( 5.00f ));
SetRenderState( D3DRS_POINTSPRITEENABLE , TRUE ) ; //打开点精灵效果
SetRenderState( D3DRS_AMBIENT, 0xffffffff ); //设置环境光颜色开启ALPHA混合效果
11)
设置混合因子:
源:SetRenderState( D3DRS_SRCBLEND , D3DBLEND_SRCALPHA );
目的:SetRenderState( D3DRS_DESTBLEND , D3DBLEND_INVSRCALPHA);
第二个参数是 D3DBLEND的枚举结构
D3DCMP_NEVER
|
总是返回
FALSE
|
D3DCMP_LESS (
常用
)
|
小于深度缓冲区的相应值时返回
TRUE
|
D3DCMP_EQUAL
|
等于
|
D3DCMP_LESSEQUAL
|
小于等于
|
D3DCMP_GREATER
|
大于
|
D3DCMP_NOTEQUAL
|
不等于
|
D3DCMP_GREATEREQUAL
|
大于等于
|
D3DCMP_ALWAYS
|
总是返回
TRUE
|
Blend mode factor
|
Description
|
D3DBLEND_ZERO
|
(0, 0, 0, 0)
|
D3DBLEND_ONE
|
(1, 1, 1, 1)
|
D3DBLEND_SRCCOLOR
|
(Rs, Gs, Bs, As)
|
D3DBLEND_INVSRCCOLOR
|
(1-Rs, 1-Gs, 1-Bs, 1-As)
|
D3DBLEND_SRCALPHA
|
(As, As, As, As)
|
D3DBLEND_INVSRCALPHA
|
(1-As, 1-As, 1-As, 1-As)
|
D3DBLEND_DESTALPHA
|
(Ad, Ad, Ad, Ad)
|
D3DBLEND_INVDESTALPHA
|
(1-Ad, 1-Ad, 1-Ad, 1-Ad)
|
D3DBLEND_DESTCOLOR
|
(Rd, Gd, Bd, Ad)
|
D3DBLEND_INVDESTCOLOR
|
(1-Rd, 1-Gd, 1-Bd, 1-Ad)
|
D3DBLEND_SRCALPHASAT
|
(f, f, f, 1); f = min(As, 1-Ad)
|
D3DBLENDOP_ADD
|
源计算结果与颜色缓冲区计算结果相加
|
D3DBLENDOP_SUBTRACT
|
源计算结果减去颜色缓冲区计算结果
|
D3DBLENDOP_REVSUBTRACT
|
颜色缓冲区计算结果减去源计算结果
|
D3DBLENDOP_MIN
|
MIN(源计算结果, 颜色缓冲区计算结果)
|
D3DBLENDOP_MAX
|
MAX(源计算结果, 颜色缓冲区计算结果)
|