【Visual C++】IDirect3DDevice::SetRenderState() 参数详解

来源:互联网 发布:bt软件 编辑:程序博客网 时间:2024/06/08 19:40

IDirect3DDevice::SetRenderState() 参数详解

 

原文地址:http://blog.sina.com.cn/s/blog_515326f90100ih81.html      

 

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,不过这个值的作用现在还没有看出来。:P

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。

原创粉丝点击