IDirect3DDevice::SetRenderState(D3DRENDERSTATETYPE State, DWORD Value)中的参数作用说明
typedef enum D3DRENDERSTATETYPE
{ 7…208
} D3DRENDERSTATETYPE, *LPD3DRENDERSTATETYPE;
DDRS_ZENABLE 用于控制深度缓存的状态。它的状态是用一个枚举类型来表示的:D3DZB_TRUE、D3DZB_FALSE和D3DZB_USEW。在D3D中z-buffering 是对z轴上的信息起作用,所以,如果你需要表示的是2D信息的话,可以用pd3dDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE ); 关闭z-buffering。比如游戏中的UI,需要用到一些控制面板之类的DD,这个时候就是需要关闭它的。这个渲染参数的默认值是跟 D3DPRESENT_PARAMETERS 中的EnableAutoDepthStencil的值是相关联的;如果这个值是TRUE,那么渲染状态就是 D3DZB_TRUE,反之为D3DZB_FALSE。
D3DRS_FILLMODE 从名字看的话,这个渲染模式是用来;控制填充模式的,它的值也是一个枚举类型 D3DFILL_POINT、D3DFILL_WIREFRAME和D3DFILL_SOLID。默认值是D3DFILL_SOLID,这个值的作用现在可以用在Geometry Clipmaps 那里。
D3DRS_SHADEMODE 这个参数控制的是阴影模式,默认值是 D3DSHADE_GOURAND,翻译过来一般是叫做 高络德渲染。另外两个 D3DSHADE_FLAT 和 D3DSHADE_PHONG。高络德阴影模式是对一个三角形的3个顶点的颜色进行线性叉值算法得到的。平面阴影模式只利用三角形的第一个顶点进行描述。很显然用D3DSHADE_GOURAND渲染方式可以得到更加逼真的阴影效果。
D3DRS_ZWRITEENABLE 默认值TRUE表示可以写深度缓存,这个参数可以保护深度缓存不被系统修改。深度比对规则是依照D3DRS_ZFUNC参数的,如果值为FALSE的话,假设深度缓存被修改,但是这个值却不能写进缓存。
D3DRS_ALPHATESTENABLE 这个参数将允许每个象素点都做alpha测试;如果测试通过的话,这个象素就会被帧缓存处理,否则的话,它会被所有帧缓存忽略掉。这个测试其实就是通过D3DRS_ALPHAFUNC参数提供的对比函数,比较输入的alpha值和参照值之间的差别,这个参照值是由D3DRS_ALPHAREF参数确定的,默认值是FALSE。
D3DRS_LASTPIXEL 默认值是TRUE,绘制一条线的最后一个象素,如果是FALSE,就是不画。这个参数的主要作用是在绘制线框的时候体现出来的,假设我们要画一个矩形边框,有时候,矩形的两条线段的端点会出现重叠的现象,影响效果,这个时候,你可以把这个参数设为FALSE;但是要注意的是,除非你有明确的目的,一般不要轻易修改这个参数的值,它可能导致线框的结合处出现断开的现象。
D3DRS_SRCBLEND 和 D3DRS_DESTBLEND 是用来设定支持的混合模式。
D3DRS_CULLMODE 这个参数用来指定三角形背面的剔除方式。它的值是一个D3DCULL类型的枚举类型。D3DCULL_NONE,不要剔除背面;D3DCULL_CW,按照顺时针的方向的顶点剔除背面;D3DCULL_CCW,按照逆时针方向剔除背面。而最后一个就是默认值,还没弄清楚区别在什么地方。
D3DRS_ZFUNC 这个参数在前面有提到,与D3DRS_ZWRITTENABLE有些关联。它的值是 D3DCMPFUNC 枚举类型的值;默认值是 D3DCMP_LESSEQUAL。它允许程序根据一个象素距离摄像机的长度来接受或者拒绝它。这个象素的深度值会与depth-buffer的值进行比较,如果通过了这个测试,这个象素就会被写。实际上,如果象素没有通过测试的话,软件光栅处理和很多硬件加速都会更加快一些,因为不要渲染象素的话,就不需要对纹理进行过滤和调节。
D3DRS_ALPHAREF 设定象素alpha测试的参考值,它的值是一个DWORD型的低8位,区间是从0x00000000到0x000000ff。默认值是0。
D3DRS_ALPHAFUNC 这个参数允许程序根据象素的alpha值来决定是否接受。类似D3DRS_ZFUNC。
D3DRS_DITHERENABLE 使程序允许抖动,默认是FALSE。
D3DRS_ALPHABLENDENABLE 允许使用alpha混合,默认是FALSE。而混合类型是由D3DRS_SRCBLEND 和 D3DRS_DESTBLEND决定的。
D3DRS_FOGENABLE 允许烟雾混合,也就是常说的烟雾效果。默认FALSE。
D3DRS_SPECULARENABLE 打开镜面反射效果,默认是FALSE。
D3DRS_FOGCOLOR 设定烟雾颜色。
D3DRS_FOGTABLEMODE 这个烟雾公式被用来计算象烟雾,设定烟雾模式,默认值是D3DFOG_NONE,另外还有D3DFOG_EXP,D3DFOG_EXP2,D3DFOG_LINEAR。
D3DRS_FOGSTART 与D3DFOG_LINEAR结合使用,设置起用Fog的深度的开始值D3DRS_FOGSTART和结束值D3DRS_FOGEND
D3DRS_FOGEND
D3DRS_FOGDENSITY用于设置呈指数或指数平方规律增加的雾的密度,密度值的取值范围为浮点值0.0~1.0,默认为1.0
D3DRS_RANGEFOGENABLE TRUE or FALSE, 有时候,使用雾化会导致图像失真,即物体颜色和雾化颜色以意想不到的方式混合。对于顶点雾化,在默认情况下,雾化混合因子计算公式中的距离d为物体在观察坐标系中的深度值,这在某些情况下会导致失真。例如,在一个场景中有A、B两个物体,它们与观察点的距离相同,从理论上说,它们应具有相同的雾化效果,然而Direct3D默认以它们在观察坐标系中的深度值(即z值)作为d计算雾化效果,因此会导致物体A和B的雾化效果明显不同。为了解决上面的问题,Direct3D为顶点雾化提供了基于范围的雾化处理,在基于范围的雾化处理中,使用物体和观察点之间的实际距离作为参数d进行雾化混合因子的计算,因为雾化效果更精确,代价是计算量大。
D3DRS_STENCILENABLE TRUE or FALSE启用和关闭模板缓存
D3DRS_STENCILFAIL 模板测试失败,保持模板缓冲中的值
D3DRS_STENCILZFAIL 对模板缓冲中的每个像素做增量操作,深度测试失败对模板缓冲中的值做增量操作,缺省为D3DSTENCILOP_KEEP.
D3DRS_STENCILPASS 模板测试成功,对模板缓冲中的值做增量操作,缺省为D3DSTENCILOP_KEEP.
D3DRS_STENCILFUNC将模板测试函数设为总是成功,缺省为D3DCMP_ALWAYS.
D3DRS_STENCILREF设置模板参考值为0
D3DRS_STENCILMASK模板掩码设为0
D3DRS_STENCILWRITEMASK设置可以写到模板缓冲的写入掩码值. The default mask is 0xFFFFFFFF.
D3DRS_TEXTUREFACTOR 多纹理采样的时候的一个因子
D3DRENDERSTATETYPE 参数说明 中文
最新推荐文章于 2024-10-10 07:30:00 发布