清华大学DirectX游戏编程第20章(全20章).ppt

清华大学DirectX游戏编程第20章(全20章).ppt

ID:51588364

大小:737.50 KB

页数:32页

时间:2020-03-24

清华大学DirectX游戏编程第20章(全20章).ppt_第1页
清华大学DirectX游戏编程第20章(全20章).ppt_第2页
清华大学DirectX游戏编程第20章(全20章).ppt_第3页
清华大学DirectX游戏编程第20章(全20章).ppt_第4页
清华大学DirectX游戏编程第20章(全20章).ppt_第5页
资源描述:

《清华大学DirectX游戏编程第20章(全20章).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第20章特效框架(EffectsFramework)主要目标:了解特效文件的结构及组织形式。学习HLSL中的一些内建对象。学习如何在特效文件中设置设备状态。学习如何创建及使用特效。通过示例程序来学习特效框架的使用。220.1Technique与Pass一个特效文件包括一种或多种Technique,一个Technique是指用于实现某些特效的一种特定方法。将一个特效的所有实现方式都写入到一个特效文件中,使我们能对特效进行更好的封装,这也是特效框架的一个目的——封装(Encapsulation)。每个Technique

2、包含一个或者多个渲染Pass。在一个渲染Pass中封装了设备的状态、取样方法,可能还包含用于渲染几何体的Shader。320.1Technique与Pass使用多个渲染Pass的主要原因是,如果想要实现某些特效,需要使用不同的设备状态或Shader等对同一个几何体进行多次渲染。现在举一个例子,列出了一个特效文件中的主要组成部分,它包含了两个Technique,第一个Technique包含一个Pass,第二个Technique包含两个Pass:参见教材P326420.2更多的HLSL内建对象HLSL语言中还有很多内建

3、对象类型。先前没有介绍这些内建对象,是因为它们主要用于特效框架。520.2.1texture对象HLSL中内建的texture类型用于表示一个IDirect3DTexture9对象。通过texture对象,可以直接在特效文件中设置纹理取样方式。可以访问texture对象的如下数据成员:type——纹理的类型(比如2D纹理、3D纹理)。format——纹理的像素格式。width——纹理的宽度,以像素为单位。height——纹理的高度,以像素为单位。depth——纹理的深度(用于三维体积纹理),以像素为单位。620.2

4、.2取样器(sampler)对象和取样器状态通过该关键字,可以初始化一个取样器对象(也就是说通过该关键字可以直接在特效文件中设置该取样器对象所对应的纹理以及取样器状态)。下面的例子说明了如何使用该关键字:TextureTex;samplerS0=sampler_state{Texture=(Tex);MinFilter=LINEAR;MagFilter=LINEAR;MipFilter=LINEAR;};720.2.3VertexShader对象和PixelShader对象HLSL内建的VertexShader和P

5、ixelShader数据类型分别是用于描述VertexShader和PixelShader。它们用于在特效框架中指定一个特定的渲染Pass中所需的特定的VertexShader和PixelShader。VertexShader和PixelShader都可以在应用程序中通过ID3DXEffect接口来设置,该接口主要有两个方法——ID3DXEffect::SetVertexShader和ID3DXEffect::SetPixelShader,分别用来设置上面的两种对象。820.2.3VertexShader对象和Pi

6、xelShader对象下面的代码说明如何初始化一个PixelShader类型的变量ps://DefineMain:OUTPUTMain(INPUTinput){...}//CompileMain:PixelShaderps=compileps_2_0Main();最后,可以像下面这样将一个Shader和一个特定的Pass关联在一起://DefineMain:OUTPUTMain(INPUTinput){...}//CompileMain:VertexShadervs=compilevs_2_0Main();Pass

7、P0{//Set'vs'astheVertexShaderforthisPass.VertexShader=(vs);...}920.2.4字符串(string)此外,还可以通过如下语法来描述一个字符串变量:stringfilename="texName.bmp";尽管string类型并不会被HLSL语言内部的函数使用,但是可以被应用程序所读取。这样就可以进一步地封装特效文件中使用的数据文件的索引信息,例如纹理的文件名,以及XFile的名称。1020.2.5注解(Annotations)注解的作用仅仅是将应用程序所

8、指定的“注解”与变量关联起来。通过的语法添加注解,以下语句示范了怎样给变量添加注解:texturetex0;该示范语句中的注解是,它把保存纹理数据的文件名与变量tex0关联起来。1120.2.5注解(Annotations)可以通过以下

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。