- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Direct3D纹理颜色混合方法分析精选
目录
引 言 2
一、Direct3D多层纹理映射过程 2
二、Direct3D多层纹理混合方法 4
三、常用纹理颜色混合操作 5
(一) 黑暗映射 5
(二) 混合纹理与材质漫反射颜色 6
(三) 混合黑暗贴图与材质漫反射颜色 7
(四)发光映射 9
(五)细节映射 10
结束语 12
参考文献 13
Direct3D 纹理颜色混合方法分析
引 言
纹理映射是三维图形开发中的一个基本内容,多层纹理映射是一种高级的纹理映射技术,通过多层纹理映射可以一次将多个纹理图片映射到同一个物体表面。纹理颜色混合是多层纹理映射的核心内容,它决定了多层纹理映射最后的效果。Direct3D提供了多种多层纹理映射的颜色混合方法,以适应不同需要。
一、Direct3D多层纹理映射过程
Direct3D最多支持8层纹理,也就是说在一个三维物体的表面可以同时拥有1~8张不同的纹理贴图。Direct3D能够在一个渲染过程中把这些纹理颜色依次混合,渲染到同一个物体的表面。每一个纹理层对应从0~7的索引序号,多层纹理映射能够模拟更为真实的三维世界。例如,要显示具有周围景物倒影的光滑大理石地板,可以把大理石地板贴图设置为纹理层0,把具有周围景物倒影的贴图设置为纹理层1,然后通过设置Direct3D多层纹理混合操作,把纹理层0和纹理层1相混合,这是绘制出的三维物体就同时具有大理石地板和景物倒影的纹理颜色。利用Direct3D多达8层的纹理混合,可以在图形显示系统中显示丰富多彩的图像。Direct3D多层纹理混合过程如图1所示。
图1 Direct3D多层纹理混合过程
通过图1可以看出8层纹理是逐层混合,然后输出的,也就是说最多需要8个阶段完成纹理映射,而且每一阶段都是独立进行的,针对每一阶段都需要设置相应的颜色值的混合方法等纹理阶段混合状态。所以一个纹理层就相当于一个纹理阶段,多层纹理映射有时也称为多阶段纹理混合。
其中,是否应用纹理层1~7,即是否进行1~7纹理阶段的操作,可由应用程序指定,但它们的选择必须是顺序的。也就是说,在没有使用第n层的情况下,第n+1层不能使用。
默认情况下,第一个纹理操作阶段(阶段0)的默认操作是D3DTOP_MODULATE;其它纹理操作阶段的默认操作是D3DTOP_DISABLE。即默认情况下Direct3D使用单层纹理映射绘制图形,除纹理层0外,纹理层1~7都是禁用的。
IDirect3DDevice9:: SetTextureStageState()函数用来设置纹理阶段混合状态,它将数值0~7作为第一个参数,表示纹理阶段序号。在上面的代码中,把D3DTSS_COLOROP作为第二个参数,表示将要设置纹理层的颜色混合运算;对于纹理层1~7,把D3DTOP_DISABLE作为第三个参数,表示禁用当前纹理层颜色操作。
将上面代码中的参数D3DTOP_DISABLE更改为枚举类型D3DTEXTUREOP的任意值,可激活该纹理层混合操作,混合方法由D3DTEXTUREOP枚举值定义。D3DTEXTUREOP的定义及其各枚举常量的具体含义将在后面详细说明。
二、Direct3D多层纹理混合方法
纹理映射本质上就是从纹理中获取颜色值,然后应用到物体的表面,多层纹理映射本质上就是混合多层纹理的颜色,然后应用到物体表面。为了处理上的方便,Direct3D将颜色的RGB通道和Alpha通道分别进行处理,具体的操作方法通过纹理阶段状态进行设置。与纹理相关的颜色操作和Alpha混合操作比较复杂,所以本节专门分别详细介绍纹理颜色混合操作和Alpha混合操作的相关内容。
设置纹理颜色混合操作的代码大致如下所示:
pd3dDevice-SetTextureStageState( i, D3DTSS_COLORARG1, arg1 ); pd3dDevice-SetTextureStageState( i, D3DTSS_COLORARG2, arg2 );
pd3dDevice-SetTextureStageState( i, D3DTSS_COLOROP, op );
一般的,用渲染状态D3DTSS_COLORARG1和D3DTSS_COLORARG2指定当前纹理层和下一层纹理层混合时的两个颜色参数:arg1、arg2,用渲染状态D3DTSS_COLOROP指定混合方式op。Direct3D使用下面的方法进行纹理混合。
Colorstage = D3DTSS_COLOROP ( D3DTSS_COLORARG1,
D3DTSS_COLORARG2 )
渲染状态D3DTSS_COLOROP用来指定纹理RGB通道混合方式,它们是属于枚举类型D3DTEXTRUEOP的常量。对于多层纹理颜色混合,Direct3D提供了多种混合方式,每种混合方式都有其各
文档评论(0)