- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8单元深度测试与Alpha混合
第8章 深度测试与Alpha混合 在绘制复杂的三维场景时,不可避免地会出现物体间的相互遮挡,在这种情况下,为了正确地绘制场景需要使用测试。半透明物体的绘制不同于不透明物体,D3D通过Alpha混合实现半透明物体的绘制。深度测试可以简化复杂场景的绘制,Alpha混合可以使绘制的三维场景更完整、理逼真。 8.1深度测试 在的场景中,通常有多个物体需要绘制,这些物体之间通常会存在遮挡关系,离观察点较远的物体会因为近处物体的遮挡而不可见或只有部分可见,D3D图形系统提供了尝试测试功能来实现这种效果。 8.1.2使用深度测试 创建深度缓冲区 若要在D3D图形程序中应用尝试测试,首先必须在创建D3D渲染设备时创建深度缓冲区: D3DPRESENT_PARAMETERS 3dpp; ZeroMemory(d3dpp,sizeof(d3dpp)); d3dpp.windowed=TRUE; d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat=D3DFMT_UNKNOWN; d3dpp.EnableAutoDepthStencil=TURE; d3dpp.AutoDepthStencilFormat=D3DFMT_D16; 参数说明 深度缓冲区是D3D渲染设备的一项属性,为了创建一个由D3D管理的深度缓冲区,只需设置结构体D3DPRENSENT_PARAMETERS相应的成员即可,在上面的代码中,d3dpp.EnableAutoDepthStencil赋值为TRUE,表示由D3D创建并管理一个深度缓冲区。d3dpp.AutoDepthStencilFormat赋值 为D3DFMT_D16,表示深度缓冲中每一个像素的深度值由16位的二进制数表示。 激活深度测试 深度缓冲区随D3D渲染设备创建好之后,调用D3D渲染状态设置函数IDirect3DDevice9::SetRenderState(),将第一个参数设置为D3DRS_ZENABLE,第二个参数设置为TRUE,激活深度测试。 g_pd3dDevice-SetRenderState( D3DRS_ZENABLE,TRUE); 设置深度测试函数 接下来仍然调用: IDirect3DDevice9::SetRenderState() 函数设置举荐度测试函数,第一个参数设置为D3DRS_ZRUNC; 第二个参数设置为想要设置的深度测试函数,它属于D3DCMPFUNC枚举类型。 D3DCMPFUNC枚举类型定义 typedef enum 3DCMPRUNC{ D3DCMP_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=o} D3DCMPFUNC; D3DCMPFUNC枚举值及其说明 D3DCMPFUNC枚举值及其说明(续表) 通常深度测试函数设置为D3DCMP_LESS,表示当测试点深度值小于深度缓冲区中相应值时,通过测试并绘制相关像素,这样没有被遮挡的物体才显示,而被遮挡住的物体就不显示。如: g_pd3dDevice-SetRenderState( D3DRS_ZFUNC,D3DCMP_LESS); 更新深度缓冲区 设置了深度测试函数后,还需要设置深度测试成功时对深度缓冲区如何操作:是保持原来的深度值,还是用当前像素的尝试值更新对应的数值,如: g_pd3dDevice-SetRenderState( D3DRS_ZWRITEENABLE,TRUE); 8.2半透明物体的绘制 在前面已经遇到了Alpha值的概念。如结构D3CCOLORVALUE中的变量a,但它并没有被使用,因为还没有激活Alpha混合,并且Alpha总是被赋值为1.0f。默认状态下Alpha为1.0f表示完全不透明。 8.2.1Alpha混合原理 前面的示例程序中,绘制图形的颜色总是替换当前颜色缓冲区中存在的颜色值,这样后画的物体总是覆盖在原有的物体上。但是当想要绘制类似于玻璃、水等具有透明效果的物体时,这种方法显然满足不了要求。通过定义一个表示物体半透明度的Alpha值和一个半透明计算公式,可以把将要绘制的物体颜色与颜色缓冲区中存在的颜色相混合,从而绘制出具
您可能关注的文档
- 第5单元 重量分析法.ppt
- 第5单元 集成运算放大器的应用.ppt
- 第5单元 统计指数因素分析.ppt
- 第5单元 模块化程序设计.ppt
- 第5单元 高级加密标准.ppt
- 第5单元 酸碱滴定法.ppt
- 第5单元(天大).ppt
- 第5单元 机械能 第3课时 机械能 机械能守恒定律.ppt
- 第5单元 计算机数控装置.ppt
- 第5单元--过程-2012041220392511.ppt
- 第十单元 第60讲 基因工程的应用和生物技术的安全性与伦理问题.docx
- 第十单元 第60讲 基因工程的应用和生物技术的安全性与伦理问题.pptx
- 高中英语人教版(2019)必修三Unit4 Workbook-Reading and Writing.pptx
- 广东省广州市三校2024-2025学年高二下学期期末联考语文试卷.docx
- 广东省韶关市2024-2025学年高一下学期期末教学质量检测生物试卷.docx
- 高中英语人教版(2019)必修三Unit5 Workbook-Reading and Writing.pptx
- 河南省平顶山市等3地2024-2025学年高一下学期6月期末考试地理试卷.docx
- 广东省韶关市2024-2025学年高一下学期期末教学质量检测物理试卷.docx
- 湖北省武汉市常青联合体2024-2025学年高一下学期期末考试语文试卷.doc
- 河南省平顶山市等3地2024-2025学年高一下学期6月期末考试语文试卷.docx
最近下载
- 危重急症抢救流程解析及规范.pdf VIP
- 2025春季学期国开电大本科《管理英语3》一平台机考真题及答案(第八套).docx VIP
- 施倍得招股融资商业计划书.docx VIP
- 【文化传媒商业BP】浙江和通影视文化有限公司招股商业计划书商业计划书.pdf VIP
- 解除土地租赁合同协议书.docx VIP
- 2025年深圳市初中学业水平考试体育与健康科目通识考试题库答案(200题).docx VIP
- 《全球母婴精品商城招股商业计划书解读》.pptx VIP
- 2024年新人教版数学七年级上册全册课件(新版教材).pptx
- 餐厅招股商业计划书.docx VIP
- 商业计划书江绿食品商业计划书招股.pdf VIP
文档评论(0)