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