您的位置:首页 > 其它

改变D3D中的渲染状态---SetRenderState

2013-04-24 20:52 393 查看
SetRenderState 函数

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的枚举结构。

[b]Direct3DDevice8 函数[/b]

05-81 GetRenderState 获取渲染器状态

05-82 SetRenderState 设置渲染器状态

//转自:http://hi.baidu.com/100bd/blog/item/04d545f18a2cbcb1a50f5270.html

05-81 GetRenderState 获取渲染器状态----------------------------------------------------

  用法:nVal=SetRenderState(StateType)

  返回值:Long 代表获取的渲染器指定类型的状态

05-82 SetRenderState 设置渲染器状态----------------------------------------------------

  用法:SetRenderState StateType,nVal

  返回值:无

  参数:

   StateType As CONST_D3DRenderStateType,枚举类型,渲染器状态有众多类型。

   nVal As Long,设置渲染器指定类型的状态,与 GetRenderState 的返回值相对应

渲染器状态 StateType 枚举类型的设置:----------------------------------------------------

7 D3DRS_ZEnable 深度缓存的状态,nVal 是 CONST_D3DZBufferType 枚举值:

 △ 0 D3DZB_FALSE

 △ 1 D3DZB_TRUE

 △ 2 D3DZB_USEW

8 D3DRS_FillMode 填充模式,nVal 是 CONST_D3DFillMode 枚举值:

 △ 1 D3DFILL_Point 只显示顶点

 △ 2 D3DFILL_WIREFRAME 显示线框

 △ 3 D3DFILL_SOLID 实心填充

9 D3DRS_ShadeEMode 阴影模式,nVal 是 CONST_D3DShadeEMode 枚举值:

 △ 1 D3DSHADE_FLAT 平面

 △ 2 D3DSHADE_GOURAUD 明暗处理,根据三角形三个顶点的法线处理

 △ 3 D3DSHADE_PHONG 以插值方式处理,阴影最逼真,但运算复杂,对硬件要求更高

10 D3DRS_LinePattern 线段样式,nVal 是 D3DPMISCCAPS_LinePatternREP?

14 D3DRS_ZWriteEnable 是否可以写深度缓存:

  0:否, 非0:是

15 D3DRS_AlphaTestEnable 是否对每个象素点做 Alpha 测试:

  0:否, 非0:是

16 D3DRS_LastPixel 是否画出条线的最后一个象素

19 D3DRS_SrcPlend 源混合模式,nVal 是 CONST_D3DPlend 枚举值:

20 D3DRS_DestPlend 目的混合模式,nVal 是 CONST_D3DPlend 枚举值:

 △ 1 D3DPlend_ZERO      将非透明的地方设置为黑色

 △ 2 D3DPlend_ONE       滤掉黑色背景?

 △ 3 D3DPlend_SrcColor     源的颜色

 △ 4 D3DPlend_InvSrcColor    源的颜色(反向)

 △ 5 D3DPlend_SrcAlpha     源的 A 通道

 △ 6 D3DPlend_InvSrcAlpha    源的 A 通道(反向)

 △ 7 D3DPlend_DestAlpha     目的的 A 通道

 △ 8 D3DPlend_InvDestAlpha    目的的 A 通道(反向)

 △ 9 D3DPlend_DestColor     目的反向颜色

 △ 10 D3DPlend_InvDestColor   目的反向颜色

 △ 11 D3DPlend_SrcAlphaSat    源的 A 通道?

 △ 12 D3DPlend_BothSrcAlpha   使用所有源像素点的 A 通道

 △ 13 D3DPlend_BothInvSrcAlpha  使用所有源像素点的 A 通道(反向)

22 D3DRS_CullMode 三角形消隐(不剔除)方式,nVal 是 CONST_D3DCull 枚举值:

 △ 1 D3DCULL_NONE(不剔除)

 △ 2 D3DCULL_CW(顺时针)

 △ 3 D3DCULL_CCW(逆时针)

23 D3DRS_ZFUNC 根据象素点 Z 坐标与摄像机的距离决定是否描绘该点,nVal 是 CONST_D3DCMPFUNC 枚举值:

 △ 1 D3DCMP_NEVER 不描绘

 △ 2 D3DCMP_LESS 淡描?

 △ 3 D3DCMP_EQUAL 均等

 △ 4 D3DCMP_LESSEQUAL   

 △ 5 D3DCMP_GREATER     大于

 △ 6 D3DCMP_NOTEQUAL    非均等

 △ 7 D3DCMP_GREATEREQUAL 范围内均等描绘?

 △ 8 D3DCMP_ALWAYS     总是描绘

24 D3DRS_AlphaREF 设定象素 Alpha 测试的参考值

25 D3DRS_AlphaFUNC 类似D3DRS_ZFUNC

26 D3DRS_DitherEnable 是否允许抖动:

  0:否, 非0:是

27 D3DRS_AlphaPlendEnable 是否开启 ALPHA 混合效果:

  0:否, 非0:是

28 D3DRS_FogEnable 是否使用烟雾效果:

  0:否, 非0:是

29 D3DRS_SpecularEnable 是否打开镜面反射效果:

  0:否, 非0:是

30 D3DRS_ZVisible 

34 D3DRS_FogColor 设定烟雾颜色,nVal 是 XRGB 格式颜色值

35 D3DRS_FogTableMode 像素雾化模式,nVal 是 CONST_D3DFogMode 枚举值:

 △ 0 D3DFOG_NONE  禁用雾化

 △ 1 D3DFOG_EXP   混合因子随距离成指数增加

 △ 2 D3DFOG_EXP2  混合因子随距离成指数平方增加

 △ 3 D3DFOG_LINEAR 混合因子随距离成线性增加,即:f=(end-d)/(end-d)

36 D3DRS_FogStart  雾化的开始距离

37 D3DRS_FogEnd   雾化终点距离

38 D3DRS_FogDensity 雾化浓度

40 D3DRS_EdgeAntiAlias 边缘抗锯齿

47 D3DRS_ZBIAS 

48 D3DRS_RangeFogEnable 是否使用像素雾化:

  0:否, 非0:是

GetDeviceCaps(caps)

if caps.RasterCaps and D3DPRASTERCAPS_FogRange then'是否支持像素雾化

SetRenderState(D3DRS_RANGEFOGEnable, true)

end if

52 D3DRS_StencilEnable 模板

53 D3DRS_StencilFail 

54 D3DRS_StencilZFail 

55 D3DRS_StencilPass 

56 D3DRS_StencilFUNC 

57 D3DRS_StencilREF 

58 D3DRS_StencilMask 

59 D3DRS_StencilWriteMask 

60 D3DRS_TextureFactor  贴图因子

128 D3DRS_WRAP0 纹理层 0 的纹理环绕,nVal 是 CONST_D3DWrapFlags 枚举值

129 D3DRS_WRAP1 纹理层 1 的纹理环绕,nVal 是 CONST_D3DWrapFlags 枚举值

130 D3DRS_WRAP2纹理层 2 的纹理环绕,nVal 是 CONST_D3DWrapFlags 枚举值

131 D3DRS_WRAP3 纹理层 3 的纹理环绕,nVal 是 CONST_D3DWrapFlags 枚举值

132 D3DRS_WRAP4 纹理层 4 的纹理环绕,nVal 是 CONST_D3DWrapFlags 枚举值

133 D3DRS_WRAP5 纹理层 5 的纹理环绕,nVal 是 CONST_D3DWrapFlags 枚举值

134 D3DRS_WRAP6 纹理层 6 的纹理环绕,nVal 是 CONST_D3DWrapFlags 枚举值

135 D3DRS_WRAP7 纹理层 7 的纹理环绕,nVal 是 CONST_D3DWrapFlags 枚举值:

 △ 1 D3DWrapCoord_0 (D3DWrap_U)

 △ 2 D3DWrapCoord_1 (D3DWrap_V)

 △ 3 D3DWrapCoord_2

 △ 4 D3DWrap_W

 △ 8 D3DWrapCOORD_3

136 D3DRS_Clipping 裁剪

137 D3DRS_Lighting 是否开启灯光照明:

  0:否, 非0:是

139 D3DRS_Ambient 环境光颜色

140 D3DRS_FogVertexMode 顶点雾化模式,nVal 与 D3DRS_FogTableMode 同

141 D3DRS_ColorVertex 

142 D3DRS_LocalViewer 

143 D3DRS_NormalizeNormals 

145 D3DRS_DiffuseMaterialSource 漫射材质源

146 D3DRS_SpecularMaterialSource 高光材质源

147 D3DRS_AmbientMaterialSource 反射材质源

148 D3DRS_EmissiveMaterialSource 本色材质源

151 D3DRS_VertexPlend 

152 D3DRS_ClipPlaneEnable 

153 D3DRS_SoftwareVertexProcessing 软件顶点处理

154 D3DRS_PointSize      设置点大小

155 D3DRS_PointSize_Min    设置点大小下限

156 D3DRS_PointSprite_Enable 是否开启点精灵效果

157 D3DRS_PointScale_Enable  是否开启缩放功能

158 D3DRS_PointScale_A 设置缩放因子

159 D3DRS_PointScale_B 

160 D3DRS_PointScale_C 

161 D3DRS_MultiSample_Antialias 多重采样抗锯齿

162 D3DRS_MultiSample_MASK 多重采样掩模

163 D3DRS_PatchEdgeStyle 贴片边缘方式

164 D3DRS_PatchSegment  贴片分割

165 D3DRS_DEBUGMONITORTOKEN 

166 D3DRS_Point_Size_Max 设置点大小上限

167 D3DRS_IndexVertexPlendEnable 

168 D3DRS_ColorWriteEnable 

170 D3DRS_TweenFactor 补间动画因子

171 D3DRS_PlendOP 

转自:http://hi.baidu.com/100bd/blog/item/04d545f18a2cbcb1a50f5270.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: