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

来源:互联网 发布:免费程序化交易软件 编辑:程序博客网 时间:2024/04/30 22:36

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



Direct3DDevice8 函数

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




原创粉丝点击