




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选,1,第8章Direct3D渲染技巧,主讲:苏振扬,2,精选,课前回忆,示例程序:g_pd3dDevice-SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_MODULATE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_DISABLE);,3,精选,D3DTSS_SELECTARG2,D3DTSS_SELECTARG1,4,精选,D3DTSS_SELECTARG1,D3DTSS_MODULATE,5,精选,主要内容,8.1Alpha混合8.2Direct3d雾化效果8.3模板测试,6,精选,8.1Alpha混合,7,精选,8.1Alpha混合,进行Alpha混合操作时,首先绘制那些不需要进行融合的物体,然后将需要进行混合的物体按照相对于摄像机的深度值进行排序;最后,按照自后往前的顺序逐个绘制将要进行融合运算的物体。,8,精选,8.1Alpha混合,Alpha混合原理Color=(RGBsrc*Ksrc)OP(RGBdst*Kdst)Color:Alpha混合后的颜色RGBsrc:当前计算得到的,要与后台缓存进行混合的像素颜色Ksrc:源混合因子RGBdst:当前处于后台缓存中的像素颜色值Kdst:目标混合因子OP通过D3DBLENDOP枚举常量指定,默认为D3DBLENDOP_ADD。,9,精选,8.1Alpha混合,RGBsrc=?,RGBdst=?,背景颜色(红色)、漫反射颜色(蓝色)、纹理(颜色),10,精选,8.1Alpha混合,Alpha混合公式中的源混合系数和目标混合系数是通过D3DBLEND枚举常量指定。typedefenumD3DBLENDD3DBLEND_ZERO=1,D3DBLEND_ONE=2,D3DBLEND_SRCCOLOR=3,D3DBLEND_INVSRCCOLOR=4,D3DBLEND_SRCALPHA=5,D3DBLEND_INVSRCALPHA=6,D3DBLEND_DESTALPHA=7,D3DBLEND_INVDESTALPHA=8,D3DBLEND_DESTCOLOR=9,D3DBLEND_INVDESTCOLOR=10,D3DBLEND_SRCALPHASAT=11,D3DBLEND_BOTHSRCALPHA=12,D3DBLEND_BOTHINVSRCALPHA=13,D3DBLEND_BLENDFACTOR=14,D3DBLEND_INVBLENDFACTOR=15,D3DBLEND_SRCCOLOR2=16,D3DBLEND_INVSRCCOLOR2=17,D3DBLEND_FORCE_DWORD=0 x7fffffff,D3DBLEND,*LPD3DBLEND;,11,精选,8.1Alpha混合,g_pd3dDevice-SetRenderState(D3DRS_BLENDOP,D3DBLENDOP_ADD);/设定混合方法g_pd3dDevice-SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);/设定源混合因子。D3DBLEND_SRCALPHA为当前绘制像素的Alpha值。g_pd3dDevice-SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);/设定目标混合因子,D3DBLEND_INVSRCALPHA为1减去当前绘制像素的Alpha值。Color=(RGBsrc*Alphasrc)+(RGBdst*(1-Alphasrc),12,精选,8.1Alpha混合,当前像素Alpha值的设定。g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_SELECTARG1);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_DIFFUSE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_SELECTARG1);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);,13,精选,8.1Alpha混合,g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE);,14,精选,8.2Direct3d雾化效果,雾化效果原理Color=f*Colorsence+(1-f)*ColorfogColor最终经过雾化处理的颜色Colorsence物体原来的颜色Colorfog程序中定义的雾的颜色f雾化因子,15,精选,8.2Direct3d雾化效果,雾化因子随距观察点的距离而衰减,其衰减规律取决于雾化模式。D3DFOG_NONED3DFOG_LINEAR,需要设置雾化开始和结束距离D3DFOG_EXP,需要设置雾的浓度D3DFOG_EXP2,需要设置雾的浓度,16,精选,8.2Direct3d雾化效果,Direct3D采用了两种方法进行雾化处理:顶点雾化和像素雾化。顶点雾化由渲染状态D3DRS_FOGVETREMODE控制。像素雾化,由渲染状态D3DRS_FOGTABLEMODE控制。,17,精选,8.2Direct3d雾化效果,1.激活雾化效果g_pd3dDevice-SetRenderState(D3DRS_FOGENABLE,true);2.设置雾化模式g_pd3dDevice-SetRenderState(D3DRS_FOGVERTEXMODE,D3DFOG_EXP);3.设置雾化参数g_pd3dDevice-SetRenderState(D3DRS_FOGCOLOR,D3DCOLOR_XRGB(45,50,170);staticfloatfogDensity=0.02f;g_pd3dDevice-SetRenderState(D3DRS_FOGDENSITY,*(DWORD*),18,精选,8.3模板测试,19,精选,8.3模板测试,模板测试过程模板测试使用模板参考值、模板掩码、模板比较函数以及当前像素在模板缓存中对应的模板值作为参数。如果通过了模板测试,绘制像素,如果为通过测试,则不绘制该像素,并按未通过模板测试的设定更改模板缓存。,20,精选,8.3模板测试,模板缓存d3dpp.AutoDepthStencilFormat=D3DFMT_D24S8;D3DFMT_D15S1D3DFMT_D24S8D3DFMT_D24X4S4D3DFMT_D24FS8,21,精选,8.3模板测试,1.模板参考值我们可用D3DRS_STENCILREF绘制状态改变该值g_pd3dDevice-SetRenderState(D3DRS_STENCILREF,0 x0);2.模板掩码模板掩码用于屏蔽模板参考值或者当前像素模板值g_pd3dDevice-SetRenderState(D3DRS_STENCILMASK,0 xffffffff);3.模板写掩码指定写入模板缓存中的掩码,默认为0 xffffffffg_pd3dDevice-SetRenderState(D3DRS_STENCILWRITEMASK,0 xffffffff);,22,精选,8.3模板测试,4.模板值我们不能显式地单独设置模板值,但是可以对模板缓存进行清空操作。此外,还可以用模板的绘制状态控制要写入模板缓存的内容。typedefenumD3DSTENCILOPD3DSTENCILOP_KEEP=1,D3DSTENCILOP_ZERO=2,D3DSTENCILOP_REPLACE=3,D3DSTENCILOP_INCRSAT=4,D3DSTENCILOP_DECRSAT=5,D3DSTENCILOP_INVERT=6,D3DSTENCILOP_INCR=7,D3DSTENCILOP_DECR=8,D3DSTENCILOP_FORCE_DWORD=0 x7fffffff,D3DSTENCILOP,*LPD3DSTENCILOP;,23,精选,8.3模板测试,5.比较运算typedefenumD3DCMPFUNCD3DCMP_NEVER=1,D3DCMP_LESS=2,D3DCMP_EQUAL=3,D3DCMP_LESSEQUAL=4,D3DCMP_GREATER=5,D3DCMP_NOTEQUAL=6,D3DCMP_GREATEREQUAL=7,D3DCMP_ALWAYS=8,D3DCMP_FORCE_DWORD=0 x7fffffff,D3DCMPFUNC,*LPD3DCMPFUNC;,24,精选,8.3模板测试,7.三种测试状态D3DRS_STENCILFAILD3DRS_STENCILZFAILD3DRS_STENCILPASS,25,精选,8.3模板测试,示例代码g_pd3dDevice-SetRenderState(D3DRS_STENCILENABLE,true);g_pd3dDevice-SetRenderState(D3DRS_STENCILFUNC,D3DCMP_EQUAL);g_pd3dDevice-SetRenderState(D3DRS_STENCI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业互联网平台网络安全态势感知技术在智慧城市领域应用前景报告
- 2025年事业单位工勤技能-安徽-安徽水生产处理工四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-安徽-安徽农机驾驶维修工三级(高级工)历年参考题库含答案解析
- E-p-Coumaroyl-CoA-E-4-Coumaroyl-CoA-生命科学试剂-MCE
- 企业人才选拔全攻略:面试题解析与实战经验分享
- 二级安防培训试题及答案
- 化工原理试题库及答案
- 消防安全专家面试题库:火灾演练面试要点
- 高中面试:选拔高素质人才的高技能应用题库
- 求职面试必 备:烟草行业的常见问题与答案
- 气候变化对水资源供需关系的动态演变分析
- 行政执法培训课件
- 老年人吸入性肺炎护理
- 春季儿童增高课件
- 环卫公司人员管理制度
- 停产报告管理制度
- 云南二级建造师b证试题及答案
- 合并家庭组建协议书
- 宽带小区进场协议书
- 电解铝公司工程项目投资估算
- 融资专员测试题及答案
评论
0/150
提交评论