- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
凹凸纹理映射
凹凸纹理映射
关于凹凸映射的原理请参阅凹凸映射(Bump Map)实现原理。
凹凸纹理映射是一种纹理混合方法,它可以创建三维物体复杂的纹理外观表面。普通的纹理映射只能模拟比较平滑的三维物体表面,难以显示表面高低起伏、凹凸不平的效果。凹凸纹理映射能够通过一张表示物体表面凹凸程度的高度图(称为凹凸纹理),对另一张表示物体表面环境映射的纹理图的纹理坐标进行相应的干扰,经过干扰的纹理坐标将应用于环境映射,从而产生凹凸不平的显示效果。凹凸纹理映射通常由三张纹理映射图组成,第一张纹理图表示物体表面原始纹理颜色,第二张凹凸纹理图表示物体表面凹凸的高度起伏值,用来对下一张环境纹理图坐标进行干扰,第三张纹理图表示周围镜面反射或漫反射光照的环境光照映射图。凹凸纹理映射的纹理映射流程如下图所示:
?
检查硬件设备
在使用凹凸纹理映射之前,应查询当前的Direct3D设备是否支持D3DTEXOPCAPS_BUMPENVMAP或D3DTEXOPCAPS_BUMPENVMAPLUMINANCE多层纹理混合,以及当前设备是否支持3层纹理映射。
BOOL SupportsBumpMapping(){ D3DCAPS9 d3dCaps; d3dDevice->GetDeviceCaps( &d3dCaps );
// Does this device support the two bump mapping blend operations? if ( 0 == d3dCaps.TextureOpCaps & ( D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_BUMPENVMAPLUMINANCE )) return FALSE;
// Does this device support up to three blending stages? if( d3dCaps.MaxTextureBlendStages < 3 ) return FALSE;
return TRUE;}
如果当前硬件不支持上面的任何一项,程序框架会自动转而使用参考设备。
?
凹凸纹理生成
Direct3D的凹凸纹理被用来表示物体表面相邻像素的高度差,它的每个纹理元素由表示水平相邻像素高度差的Du、表示垂直相邻像素高度差的Dv以及表示该点亮度的L组成(某些凹凸纹理像素格式可以不包含L)。下表列出了Direct3D支持的凹凸纹理像素格式:
凹凸纹理像素格式 说明 D3DFMT_V8U8 每个像素由16位整数表示,分别由8位整数表示Du和Dv D3DFMT_L6V5U5 每个像素由16位整数表示,6位整数表示L,分别由5位整数表示Du和Dv D3DFMT_X8L8V8U8 每个像素由32位整数表示,包括8位保留位、8位L、8位Du、8位Dv D3DFMT_V16U16 每个像素由32位整数表示,分别由16位整数表示Du和Dv D3DFMT_Q8W8V8U8 每个像素由32位整数表示,分别由8位整数表示Q、W、V、U D3DFMT_CxV8U8 压缩像素格式,每个像素由16位整数表示,即8位Du和8位Dv,另外C = sqrt(1 - Du2 - Dv2? ) 通常情况下,可以载入一张表示物体表面图像高度的纹理图,通过计算高度图水平相邻和垂直相邻元素的高度差来生成凹凸纹理,也可以通过程序生成凹凸纹理,这里根据纹理图来生成凹凸纹理,代码如下:
//--------------------------------------------------------------------------------------// Create bump texture from height map texture.//--------------------------------------------------------------------------------------HRESULT CreateBumpTexture(IDirect3DDevice9* device){ HRESULT hr;
D3DSURFACE_DESC surface_desc; g_height_map_texture->GetLevelDesc(0, &surface_desc);
V_RETURN(device->CreateTexture(surface_desc.Width, surface_desc.Height, 1, 0, D3DFMT_X8L8V8U8, D3DPOOL_MANAGED, &g_bump_map_text
您可能关注的文档
- 再制奶酪加工与配料.doc
- 再生铟可行性研究报告.doc
- 内衬层 薄胶片压延生产线.ppt
- 再别康桥之康桥风光诗配画.ppt
- 再穷也要会测摄像机.doc
- 再造:北京银行迈向现代化必经之路.doc
- 冒险者户外用品计划书.doc
- 写人作文升格.ppt
- 写好议论一——讲理.ppt
- 冒顶片帮.doc
- 人教版四年级下册数学期中测试卷含完整答案(全国通用).docx
- 小学四年级上册数学试卷期末卷附完整答案【精品】.docx
- 人教版六年级上册数学期末测试卷及参考答案【轻巧夺冠】.docx
- 县乡教师选调进城考试《教育心理学》题库及一套参考答案.docx
- 人教版五年级下册数学期末测试卷带答案(b卷).docx
- 湖南省怀化新晃县中等职业教育学校专任教师和在校学生数量3年数据解读报告2020版.pdf
- 河南省新乡市乡村普通初中专任教师数量情况3年数据解读报告2020版.pdf
- 四川省德阳市肉猪和肉牛出栏头数、猪年末头数3年数据解读报告2020版.pdf
- 湖南省湘西州古丈县中等学校教职工和在校学生数量3年数据分析报告2020版.pdf
- 湖南省常德石门县中等学校教职工和专任教师数量3年数据研究报告2020版.pdf
文档评论(0)